Aller au contenu principal

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.enabled sur false.
  • 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

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, map et mapPartitions, 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.

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 :

Limitations de la mise en cache

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} et spark.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) :

  • CSV
  • JSON
  • AVRO
  • DELTA
  • KAFKA
  • PARQUET
  • ORC
  • TEXT
  • UNITY_CATALOG
  • BINARYFILE
  • XML
  • SIMPLESCAN
  • ICEBERG

Le compute Serverless prend en charge les sources de données suivantes pour les opérations de lecture :

  • CSV
  • JSON
  • AVRO
  • DELTA
  • KAFKA
  • PARQUET
  • ORC
  • TEXT
  • UNITY_CATALOG
  • BINARYFILE
  • XML
  • SIMPLESCAN
  • ICEBERG
  • MYSQL
  • POSTGRESQL
  • SQLSERVER
  • REDSHIFT
  • SNOWFLAKE
  • SQLDW (Azure Synapse)
  • DATABRICKS
  • BIGQUERY
  • ORACLE
  • SALESFORCE
  • SALESFORCE_DATA_CLOUD
  • TERADATA
  • WORKDAY_RAAS
  • MONGODB