Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique quelles sont les limitations actuelles du calcul serverless pour les notebooks et les tâches. Il commence par une vue d’ensemble des considérations les plus importantes, puis fournit une liste de référence complète des limitations.
Prise en charge de la langue et de l’API
- R n’est pas pris en charge.
- Seules les API Spark Connect sont prises en charge. Les API RDD Spark ne sont pas prises en charge.
- Spark Connect, qui est utilisé par le calcul serverless, reporte l’analyse et la résolution de noms au temps d’exécution, ce qui peut changer le comportement de votre code. Consultez Comparer Spark Connect à Spark Classic.
- Le mode ANSI est activé par défaut. Des casts invalides, un débordement arithmétique et une entrée mal formée génèrent des erreurs d’exécution au lieu de renvoyer silencieusement
NULLou un résultat incorrect. Pour plus d’informations sur la gestion des opérations qui modifient le comportement et sur les limites liées à la possibilité de désactiver ces changements, consultez la section Différences de comportement SQL du guide de migration. - Le fuseau horaire par défaut de la session est
Etc/UTC(Temps universel coordonné). Pour utiliser un fuseau horaire différent, réglezspark.sql.session.timeZone. Consultez Configurer les propriétés Spark pour les notebooks serverless et les travaux. - Lors de la création d’un DataFrame à partir de données locales à l’aide de
spark.createDataFrame, les tailles de ligne ne peuvent pas dépasser 128 Mo.
Accès aux données et stockage
- Vous devez utiliser le catalogue Unity pour vous connecter à des sources de données externes. Utilisez les emplacements externes pour accéder au stockage cloud.
- L’accès à DBFS est limité. Utilisez plutôt des volumes de catalogue Unity ou des fichiers d’espace de travail .
- Le répertoire de travail pour les carnets portables et les tâches de travail n’est pas garanti, donc les chemins relatifs des fichiers et les importations Python relatives peuvent échouer. Utilisez des chemins absolus pour référencer des fichiers, et importez du code Python partagé sous forme de fichiers workspace au lieu de modules relatifs. Voir Travail avec Python et modules R.
- 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 intersession est requis, Databricks recommande d’utiliser des vues temporaires de session ou de créer des tables.
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 (Externe) 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,
map, etmapPartitions, ne peuvent pas dépasser 1 Go d'utilisation de la mémoire. - Les UDF Scala ne peuvent pas être utilisées à l’intérieur de fonctions d'ordre supérieur.
Interface utilisateur et journalisation
- L’interface utilisateur Spark n’est pas disponible. Utilisez plutôt le profil de requête pour afficher des informations sur vos requêtes Spark. Voir Profil de requête.
- Les journaux Spark ne sont pas disponibles. Les utilisateurs ont uniquement accès aux journaux d’activité d’application côté client.
Accès réseau et espace de travail
- L’accès entre espaces de travail est autorisé uniquement si les espaces de travail se trouvent dans la même région et que l’espace de travail de destination n’a pas de liste de contrôle d’accès IP (ACL) ou de lien privé frontal configuré.
- Databricks Container Services n’est pas pris en charge.
- Le calcul serverless ne peut pas se connecter à des ressources accessibles uniquement via IPv6. Les ressources doivent être accessibles via IPv4.
Limitations de la diffusion en continu
Le calcul serverless prend en charge les déclencheurs Structured Streaming suivants :
-
Trigger.AvailableNow(). Databricks recommande ce mode de déclenchement pour le calcul sans serveur. -
Trigger.Once(). Ce mode déconseillé est pris en charge, mais n’est pas recommandé.
Les déclencheurs suivants ne sont pas pris en charge sur le calcul serverless :
-
Trigger.Continuous(interval). -
Trigger.ProcessingTime(interval).- Par défaut, si vous ne spécifiez pas de mode déclencheur, Apache Spark définit le déclencheur
Trigger.ProcessingTime("0 seconds")sur . Vous devez définir un déclencheur approprié pris en charge sur le calcul serverless.
- Par défaut, si vous ne spécifiez pas de mode déclencheur, Apache Spark définit le déclencheur
Si vous tentez d’utiliser un déclencheur non pris en charge, la requête génère une erreur INFINITE_STREAMING_TRIGGER_NOT_SUPPORTED.
Pour les charges de travail de diffusion en continu, utilisez Mode Pipeline déclenché et mode Pipeline continu en mode continu sur serverless, ou utilisez Trigger.AvailableNow() dans une exécution de tâches en continu.
Pour obtenir un guide de décision qui associe les cas d’usage du streaming au produit sans serveur adapté, consultez Streaming sur un environnement de calcul sans serveur.
Toutes les limitations de diffusion en continu en mode d’accès standard s’appliquent également. Voir Limitations de la diffusion en continu.
Limitations des blocs-notes
- 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 obtenir des solutions de contournement, consultez l’article Meilleures pratiques relatives au calcul serverless. Les tâches JAR dans des travaux sont prises en charge. Consultez Tâche JAR pour des travaux.
- Les bibliothèques à portée du notebook ne sont pas mises en cache d'une session de développement à l'autre.
- Le partage de tables et de vues TEMP lors du partage d’un bloc-notes entre les utilisateurs n’est pas pris en charge.
- Autocomplétion et Explorateur de variables pour les dataframes dans les notebooks ne sont pas pris en charge.
- Par défaut, les nouveaux blocs-notes sont enregistrés au
.ipynbformat. Si votre bloc-notes est enregistré au format source, les métadonnées serverless peuvent ne pas être capturées correctement et certaines fonctionnalités peuvent ne pas fonctionner comme prévu. - Les balises de notebook ne sont pas prises en charge. Utilisez des stratégies d'utilisation serverless pour baliser l'utilisation serverless.
Limitations du travail
- Les journaux des tâches ne sont pas isolés pour chaque exécution de tâche. Les journaux contiennent les résultats de plusieurs tâches.
- Les bibliothèques de tâches ne sont pas prises en charge pour les tâches de notebook. Préférez l'utilisation de bibliothèques délimitées aux notebooks. Consultez Bibliothèques Python délimitées à un notebook.
- Par défaut, les travaux serverless n’ont pas de délai d’exécution de requête. Vous pouvez définir un délai d’attente d’exécution pour les requêtes de travail à l’aide de la
spark.databricks.execution.timeoutpropriété. Pour plus d’informations, consultez Configurer les propriétés Spark pour les notebooks et les travaux serverless. - Le calcul serverless a un runtime maximal de 7 jours. Les exécutions qui dépassent 7 jours sont interrompues 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 calcul classique.
Limitations spécifiques au calcul
Les fonctionnalités spécifiques au calcul suivantes ne sont pas prises en charge :
- Stratégies de calcul
- Scripts d’init à portée de calcul. Pour installer des paquets ou configurer l’environnement Python, utilisez plutôt un environnement de base ou des dépendances de notebooks. Consultez Configurer l’environnement serverless.
- Bibliothèques centrées sur le calcul, y compris les sources de données personnalisées et les extensions Spark. Préférez l'utilisation de bibliothèques délimitées aux notebooks.
- Pools d’instances
- Journaux des événements de calcul
- La plupart des configurations de calcul Apache Spark. Pour obtenir la liste des configurations prises en charge, consultez Configurer les propriétés Spark pour les notebooks et travaux serverless.
- Variables d’environnement à portée de calcul. Pour transmettre des variables d’environnement au code de l’application dans les tâches Lakeflow Jobs serverless, utilisez la fonction variables d’environnement au niveau du métier (Beta). Voir Configurer les variables d’environnement pour les tâches serverless. Vous pouvez aussi utiliser widgets pour créer des paramètres de job et de tâche.
Limitations de mise en cache
- Les métadonnées sont mises en cache dans les sessions de calcul serverless. En raison de cela, le contexte de session peut ne pas être entièrement réinitialisé lors du changement de catalogue. Pour effacer le contexte de session, réinitialisez la ressource de calcul serverless ou démarrez une nouvelle session.
- Les API de cache dataframe et SQL ne sont pas prises en charge sur le calcul serverless. L’utilisation de l’une de ces API ou commandes SQL entraîne une exception.
- Le cache du modèle Spark ML est limité à 1 Go (1073741824 octets) par session, et un seul modèle est limité à 100 Mo. Les deux limites sont plus faibles pour le calcul serverless que pour le calcul classique, et aucune ne peut être modifiée. Le dépassement de la limite de session déclenche l’exception ML_CACHE_SIZE_OVERFLOW_EXCEPTION. Le dépassement de la limite par modèle déclenche MODEL_SIZE_OVERFLOW_EXCEPTION. Pour libérer de l’espace dans le cache, supprimez les références Python aux modèles que vous n’utilisez plus. Les modèles laissés inutilisés pendant 15 minutes passent au disque local et comptent toujours pour la limite de session.
Limitations de Hive
Les tables Hive SerDe ne sont pas prises en charge. En outre, 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îne 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 à l’aide de la syntaxe${var}ne sont pas prises en charge. L’utilisation de variables Hive entraîne une exception.Utilisez plutôt les DECLARE VARIABLESET VARIABLE , et SQL et les marqueurs de paramètres (' ?' ou ' :var') pour déclarer, modifier et référencer l’état de session. Vous pouvez également utiliser la clause IDENTIFIER pour paramétrer les noms d’objets dans de nombreux cas.
Sources de données prises en charge
Le calcul serverless prend en charge les sources de données suivantes pour les opérations DML (écriture, mise à jour, suppression) :
CSVJSONAVRODELTAKAFKAPARQUETORCTEXTUNITY_CATALOGBINARYFILEXMLSIMPLESCANICEBERG
Le calcul serverless prend en charge les sources de données suivantes pour les opérations de lecture :
CSVJSONAVRODELTAKAFKAPARQUETORCTEXTUNITY_CATALOGBINARYFILEXMLSIMPLESCANICEBERGMYSQLPOSTGRESQLSQLSERVERREDSHIFTSNOWFLAKE-
SQLDW(Azure Synapse) DATABRICKSBIGQUERYORACLESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB