Limitations du compute Serverless
Cet article explique les limitations actuelles du compute serverless pour les notebooks et les jobs. Il commence par un aperçu des considérations les plus importantes, puis fournit une liste de référence complète des limitations.
Prise en charge des langues et des API
- R n'est pas pris en charge.
- Seules les APIs Spark Connect sont prises en charge. Les APIs Spark RDD ne sont pas prises en charge.
- Spark Connect, utilisé par le compute serverless, reporte l’analyse et la résolution de noms au moment de l’exécution, ce qui peut modifier le comportement de votre code. Voir Comparaison de Spark Connect à Spark Classic.
- ANSI SQL est le default lors de l'écriture de SQL. Désinscrivez-vous du mode ANSI en définissant
spark.sql.ansi.enabledsurfalse. - Lors de la création d'un DataFrame à partir de données locales à l'aide de
spark.createDataFrame, la taille des lignes ne peut pas dépasser 128 Mo.
Accès et stockage des données
-
Vous devez utiliser Unity Catalog pour vous connecter à des sources de données externes. Utilisez des emplacements externes pour accéder au stockage cloud.
-
L'accès à DBFS est limité. Utilisez les volumes Unity Catalog ou les fichiers de workspace à la place.
-
Les coordonnées Maven ne sont pas prises en charge.
-
Les vues temporaires globales ne sont pas prises en charge. Lorsque le passage de données inter-sessions est requis, Databricks recommande d'utiliser des vues temporaires de session ou de créer des tables.
-
Les montages DBFS avec les profils d'instance AWS ne sont pas pris en charge.
Fonctions définies par l'utilisateur (UDF)
- Les fonctions définies par l'utilisateur (UDF) ne peuvent pas accéder à internet. Pour cette raison, la commande CREATE FUNCTION (External) n'est pas prise en charge. Databricks recommande d'utiliser CREATE FUNCTION (SQL et Python) pour créer des UDF.
- Le code personnalisé défini par l'utilisateur, tel que les UDF,
mapetmapPartitions, ne peut pas dépasser 1 Go d'utilisation de la mémoire. - Les UDF Scala ne peuvent pas être utilisées dans les fonctions d'ordre supérieur.
Interface utilisateur et logging
- La Spark UI n'est pas disponible. Utilisez plutôt le profil de requête pour afficher des informations sur vos requêtes Spark. Consultez le profil de requête.
- Les logs Spark ne sont pas disponibles. Seuls les utilisateurs ont accès aux logs d'application côté client.
Accès réseau et au workspace
- L'accès inter-workspace est autorisé uniquement si les workspaces se trouvent dans la même région et que le workspace de destination n'a pas d'ACL IP ou de PrivateLink frontal configuré.
- Databricks Container Services n'est pas pris en charge.
Limitations du streaming
Le Serverless compute prend en charge les Trigger de Structured Streaming suivants :
Trigger.AvailableNow()Databricks recommande ce mode de trigger pour le compute serverless.Trigger.Once(). Ce mode obsolète est pris en charge mais non recommandé.
Les Trigger suivants ne sont pas pris en charge sur le compute Serverless :
Trigger.Continuous(interval).Trigger.ProcessingTime(interval).- Par default, si vous ne spécifiez pas de mode de trigger, Apache Spark définit le trigger sur
Trigger.ProcessingTime("0 seconds"). Vous devez définir un Trigger pris en charge sur le compute Serverless.
- Par default, si vous ne spécifiez pas de mode de trigger, Apache Spark définit le trigger sur
Si vous tentez d'utiliser un Trigger non pris en charge, la query déclenche une erreur INFINITE_STREAMING_TRIGGER_NOT_SUPPORTED.
Pour les workloads de streaming continu, utilisez le mode pipeline déclenché ou continu en mode continu sur serverless, ou utilisez Trigger.AvailableNow() dans un mode d'exécution de jobs en continu.
Pour un guide de décision qui met en correspondance les cas d'utilisation du streaming avec le bon produit serverless, voir Streaming sur compute serverless.
Toutes les limitations pour le streaming en mode d’accès standard s’appliquent également. Consultez les limitations de streaming.
Limitations des Notebooks
- Scala et R ne sont pas pris en charge dans les Notebooks.
- Les bibliothèques JAR ne sont pas prises en charge dans les Notebooks. Pour les solutions de contournement, consultez les Bonnes pratiques pour le compute serverless. Les tâches JAR dans les Jobs sont prises en charge. Consultez Tâche JAR pour les jobs.
- Les bibliothèques à portée du notebook ne sont pas mises en cache entre les sessions de développement.
- Le partage de tables et de vues TEMP lors du partage d'un notebook entre utilisateurs n'est pas pris en charge.
- La saisie semi-automatique et l'explorateur de variables pour les DataFrames dans les Notebooks ne sont pas pris en charge.
- By default, les nouveaux Notebooks sont enregistrés au format
.ipynb. Si votre Notebook est enregistré au format source, les métadonnées Serverless risquent de ne pas être capturées correctement et certaines fonctionnalités risquent de ne pas fonctionner comme prévu. - Les tags de Notebook ne sont pas pris en charge. Utilisez les politiques d'utilisation serverless pour taguer l'utilisation serverless.
Limitations de Job
- Les Logs de tâche ne sont pas isolés par exécution de tâche. Les Logs contiendront le résultat de plusieurs tâches.
- Les bibliothèques de tâches ne sont pas prises en charge pour les tâches de Notebook. Utilisez plutôt des bibliothèques à l'échelle du Notebook. Consultez les bibliothèques Python à l'échelle du Notebook.
- Par default, les Job Serverless n'ont pas de délai d'exécution de query. Vous pouvez définir un délai d'expiration d'exécution pour les requêtes de job en utilisant la propriété
spark.databricks.execution.timeout. Pour plus de détails, consultez Configurer les propriétés Spark pour les notebooks et les jobs serverless. - Le compute Serverless a une durée d'exécution maximale de 7 jours. Les exécutions qui dépassent 7 jours sont terminées par la plateforme et ne sont pas relancées. Pour exécuter des charges de travail de plus de 7 jours, divisez-les en exécutions plus petites ou utilisez le compute classique.
Limitations spécifiques au compute
Les fonctionnalités spécifiques au compute suivantes ne sont pas prises en charge :
- Politiques de compute
- Scripts d’initialisation délimités au compute
- Bibliothèques de portée compute, y compris les sources de données personnalisées et les extensions Spark. Utilisez plutôt les bibliothèques limitées au notebook.
- Pools d'instances
- Logs d'événements du compute
- La plupart des configurations de compute Apache Spark. Pour une liste des configurations prises en charge, consultez Configurer les propriétés Spark pour les notebooks et jobs serverless.
- Variables d'environnement. Au lieu de cela, Databricks recommande d'utiliser des widgets pour créer des paramètres de job et de tâche.
Limitations de la mise en cache
- Les métadonnées sont mises en cache dans les sessions de compute Serverless. De ce fait, le contexte de session pourrait ne pas se Reset complètement lors du changement de catalogues. Pour effacer le contexte de la session, Reset la ressource de compute Serverless ou start une nouvelle session.
- Les APIs de cache DataFrame et SQL ne sont pas pris en charge sur le compute Serverless. L'utilisation de l'une de ces APIs ou commandes SQL entraîne une exception.
Limitations de Hive
-
Les tables Hive SerDe ne sont pas prises en charge. De plus, la commande LOAD DATA correspondante qui charge les données dans une table Hive SerDe n'est pas prise en charge. L'utilisation de la commande entraînera une exception.
La prise en charge des sources de données est limitée à AVRO, BINARYFILE, CSV, DELTA, JSON, KAFKA, ORC, PARQUET, TEXT et XML.
-
Les variables Hive (par exemple
${env:var},${configName},${system:var}etspark.sql.variable) ou les références de variables de configuration utilisant la syntaxe${var}ne sont pas prises en charge. L'utilisation de variables Hive entraînera une exception.Utilisez plutôt DECLARE VARIABLE, SET VARIABLE, ainsi que les références de variables de session SQL et les marqueurs de paramètres ('?', ou '').') pour déclarer, modifier et référencer l'état de la session. Vous pouvez également utiliser la clause IDENTIFIER pour paramétrer les noms d'objet dans de nombreux cas.
Sources de données prises en charge
Le compute Serverless prend en charge les sources de données suivantes pour les opérations DML (écriture, mise à jour, suppression) :
CSVJSONAVRODELTAKAFKAPARQUETORCTEXTUNITY_CATALOGBINARYFILEXMLSIMPLESCANICEBERG
Le compute Serverless prend en charge les sources de données suivantes pour les opérations de lecture :
CSVJSONAVRODELTAKAFKAPARQUETORCTEXTUNITY_CATALOGBINARYFILEXMLSIMPLESCANICEBERGMYSQLPOSTGRESQLSQLSERVERREDSHIFTSNOWFLAKESQLDW(Azure Synapse)DATABRICKSBIGQUERYORACLESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB