Limitations du calcul serverless
Cet article explique les limitations actuelles du calcul serverless pour les notebooks et les travaux. 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.
Vue d’ensemble des limitations
Avant de créer des charges de travail ou de migrer des charges de travail vers un calcul serverless, tenez d’abord compte des limitations suivantes :
- Python et SQL sont les seuls langages pris en charge.
- Seules les API Spark Connect sont prises en charge. Les API RDD Spark ne sont pas prises en charge.
- Les bibliothèques JAR ne sont pas prises en charge. Pour obtenir des solutions de contournement, consultez l’article Meilleures pratiques relatives au calcul serverless.
- Le calcul serverless dispose d’un accès illimité pour tous les utilisateurs de l’espace de travail.
- Les balises de notebook ne sont pas prises en charge.
- Pour la diffusion en continu, seule la logique de traitement par lots incrémentiel peut être utilisée. Il n’existe aucune prise en charge pour les intervalles de déclencheurs à durée définie ou par défaut. Voir Limitations de la diffusion en continu.
Liste de référence des limitations
Les sections suivantes répertorient les limitations actuelles du calcul serverless.
Le calcul serverless est basé sur l’architecture de calcul partagée. Les limitations les plus pertinentes héritées du calcul partagé sont répertoriées ci-dessous, ainsi que d’autres limitations spécifiques au serverless. Pour obtenir la liste complète des limitations de calcul partagées, consultez Limitations du mode d’accès au calcul pour le catalogue Unity.
Limitations générales
Scala et R ne sont pas pris en charge.
SQL ANSI est le mode par défaut lors de l’écriture de SQL. Désactivez le mode ANSI en définissant
spark.sql.ansi.enabled
surfalse
.Les API RDD Spark ne sont pas prises en charge.
Le contexte Spark (sc),
spark.sparkContext
etsqlContext
ne sont pas pris en charge.Les services conteneur Databricks ne sont pas pris en charge.
Le terminal web n’est pas pris en charge.
Aucune requête ne peut s’exécuter plus de 48 heures.
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.
La prise en charge des sources de données est limitée à AVRO, BINARYFILE, CSV, DELTA, JSON, KAFKA, ORC, PARQUET, ORC, TEXT et XML.
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 fonctions définies par l’utilisateur.
Les lignes individuelles ne doivent pas dépasser la taille maximale de 128 Mo.
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 lors de l’utilisation de notebooks et de travaux serverless. Les utilisateurs ont uniquement accès aux journaux d’activité d’application côté client.
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 ou privateLink frontal configuré.
Les vues temporaires globales ne sont pas prises en charge. Databricks recommande d’utiliser des vues temporaires de session ou de créer des tables où le passage de données intersession est requis.
Limitations de la diffusion en continu
- Il n’existe aucune prise en charge pour les intervalles de déclencheurs à durée définie ou par défaut. Seul
Trigger.AvailableNow
est pris en charge. Consultez Configurer des intervalles de déclencheur Structured Streaming. - Toutes les limitations du streaming sur le mode d’accès partagé s’appliquent également. Consultez Limitations et exigences de diffusion en continu pour le mode d’accès partagé à Unity Catalog.
Limitations du Machine Learning
- Databricks Runtime pour le Machine Learning et Apache Spark MLlib ne sont pas pris en charge.
- Les GPU ne sont pas pris en charge.
Limitations des blocs-notes
- Les blocs-notes ont accès à une mémoire de 8 Go qui ne peut pas être configurée.
- Les bibliothèques limitées aux notebooks 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 bloc-notes entre les 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 prises en charge.
Limitations de flux de travail
- La taille du pilote pour le calcul serverless pour les travaux est actuellement fixe et ne peut pas être modifiée.
- Les journaux des tâches ne sont pas isolés par exécution de tâche. Les journaux contiennent la sortie de plusieurs tâches.
- Les bibliothèques de tâches ne sont pas prises en charge pour les tâches de notebook. Utilisez les bibliothèques limitées à un notebook. Consultez Bibliothèques Python délimitées à un notebook.
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’initialisation limités au calcul
- Bibliothèques limitées au calcul, y compris les sources de données personnalisées et les extensions Spark. Utilisez les bibliothèques limitées à un notebook.
- Configurations d’accès aux données au niveau du calcul, y compris les profils d’instance. Par conséquent, l’accès aux tables et aux fichiers via HMS sur des chemins cloud, ou avec des montages DBFS qui n’ont pas d’informations d’identification incorporées ne fonctionnera pas.
- 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 paramètres de configuration Spark pris en charge.
- Variables d'environnement. Au lieu de cela, Databricks recommande d’utiliser des widgets pour créer des paramètres de travail et de tâche.
Limitations de mise en cache
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 provoque une exception.
- df.cache(), df.persist()
- df.unpersist()
- spark.catalog.cacheTable()
- spark.catalog.uncacheTable()
- spark.catalog.clearCache()
- CACHE TABLE
- UNCACHE TABLE
- REFRESH TABLE
- CLEAR CACHE
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, ORC, 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 DECLARE VARIABLE, SET VARIABLE, les références de variable de session 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.