Aller au contenu principal

Exigences et limitations standard en matière de compute

Cette page inclut une liste d'exigences et de limites pour le compute standard. Si vous utilisez le compute classique, Databricks recommande d'utiliser le mode d'accès standard, sauf si votre charge de travail dépend de l'une des limites énumérées ci-dessous.

important

Les scripts d'initialisation et les bibliothèques sont pris en charge différemment selon les modes d'accès et les versions de Databricks Runtime. Consultez Où les scripts d'initialisation peuvent-ils être installés ? et bibliothèques étendues au compute.

Limites actuelles du compute standard

Les sections suivantes énumèrent les limitations du compute standard basées sur la version la plus récente de Databricks Runtime. Pour les limitations qui s'appliquent aux versions antérieures de Databricks Runtime, consultez les Limitations dépendantes du Runtime.

Si ces fonctionnalités sont requises pour votre charge de travail, utilisez plutôt un compute dédié.

Limitations générales du compute standard

  • Databricks Runtime pour le ML n'est pas pris en charge. Installez plutôt toute bibliothèque ML non incluse dans Databricks Runtime en tant que bibliothèque à l'échelle du compute.
  • Le compute compatible GPU n'est pas pris en charge.
  • Les Job tasks Spark ne sont pas prises en charge. Utilisez une tâche JAR à la place.
  • DBUtils et d'autres clients ne peuvent lire depuis le stockage cloud qu'à l'aide d'un emplacement externe.
  • La racine et les montages DBFS ne prennent pas en charge FUSE.

Limitations linguistiques

  • R n'est pas pris en charge.

Limitations de Spark API

  • Spark Context (sc), spark.sparkContext et sqlContext ne sont pas pris en charge pour Scala :

    • Databricks recommande d'utiliser la variable spark pour interagir avec l'instance SparkSession.
    • Les sc fonctions suivantes ne sont pas non plus prises en charge : emptyRDD, range, init_batched_serializer, parallelize, pickleFile, textFile, wholeTextFiles, binaryFiles, binaryRecords, sequenceFile, newAPIHadoopFile, newAPIHadoopRDD, hadoopFile, hadoopRDD, union, runJob, setSystemProperty, uiWebUrl, stop, setJobGroup, setLocalProperty, getConf.
  • Le réglage de certaines configurations Spark n'est pas pris en charge. La création ou la modification d'un cluster qui définit une propriété restreinte échoue avec une erreur. Pour la liste complète, consultez les limitations de configuration Spark.

  • 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.

  • Les APIs RDD ne sont pas prises en charge.

  • Spark Connect, qui est utilisé dans les versions plus récentes de Databricks Runtime, diffère 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.

Limitations des UDF

Limitations du streaming

remarque

Certaines des options Kafka listées bénéficient d'un support limité lorsqu'elles sont utilisées pour des configurations prises en charge sur Databricks. Toutes les limitations Kafka listées sont valides pour le traitement batch et Stream. Voir Connecter à Apache Kafka.

  • L'utilisation des sources de socket n'est pas prise en charge.

  • Le sourceArchiveDir doit se trouver au même emplacement externe que la source lorsque vous utilisez option("cleanSource", "archive") avec une source de données gérée par Unity Catalog.

  • Pour les sources et récepteurs Kafka, les options suivantes ne sont pas prises en charge :

    • kafka.sasl.client.callback.handler.class
    • kafka.sasl.login.callback.handler.class
    • kafka.sasl.login.class
    • kafka.partition.assignment.strategy
  • Python foreachBatch ne prend pas en charge ThreadPoolExecutor ni l’exécution multithread. L'exécution multithread peut ne pas générer d'erreurs, mais peut entraîner une corruption des données ou des résultats incohérents.

  • Les profils d'instance qui configurent l'accès aux sources externes telles que Kafka ou Kinesis pour les charges de travail streaming ne sont pas pris en charge. Utilisez plutôt les identifiants de service.

Limitations du réseau et du système de fichiers

  • Le compute standard exécute les commandes en tant qu'utilisateur à faibles privilèges, interdit d'accéder aux parties sensibles du système de fichiers.

  • Les chemins de style POSIX (/) pour DBFS ne sont pas pris en charge.

  • Seuls les administrateurs de workspace et les utilisateurs disposant des autorisations ANY FILE peuvent interagir directement avec les fichiers à l'aide de DBFS.

  • Vous ne pouvez pas vous connecter au service de métadonnées d'instance (IMDS) ou à d'autres services s'exécutant dans le Virtual Private Cloud (VPC) Databricks. Pour accéder aux services cloud à l'aide de boto3, utilisez les identifiants de service.

Limitations des variables d'environnement

Seul un ensemble prédéfini de variables d'environnement est disponible pour le moteur Spark et les scripts d'initialisation sur le compute standard. Les variables d'environnement que vous définissez sur un cluster mais qui ne figurent pas dans cet ensemble restent disponibles pour votre code utilisateur, y compris les fonctions définies par l'utilisateur (UDF), mais ne sont pas disponibles pour le moteur Spark ou les scripts d'initialisation.

Cet ensemble inclut des variables courantes de configuration, d'identifiant et d'exécution. Les exemples suivants ne sont pas exhaustifs :

  • Mise en réseau et proxys : HTTP_PROXY, HTTPS_PROXY, NO_PROXY
  • Certificats TLS : REQUESTS_CA_BUNDLE, SSL_CERT_FILE
  • Informations d'identification et région AWS : AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, AWS_DEFAULT_REGION
  • Informations d'identification Azure : AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID
  • Identifiants Google Cloud : GOOGLE_APPLICATION_CREDENTIALS
  • Connexion Databricks : DATABRICKS_HOST, DATABRICKS_TOKEN
  • Paramètres régionaux et fuseau horaire : TZ, LANG, LC_ALL
  • Parallélisme et threading : OMP_NUM_THREADS, OPENBLAS_NUM_THREADS, MKL_NUM_THREADS, NUMEXPR_NUM_THREADS
  • Observabilité : DD_API_KEY, DD_SITE, DD_ENV
  • Valeurs par défaut Unity Catalog : CATALOG, CATALOG_NAME

Limitations du noyau Scala

Les limitations suivantes s'appliquent lorsque vous utilisez le noyau Scala sur un compute standard :

  • Certaines classes ne peuvent pas être utilisées dans votre code si elles entrent en conflit avec la bibliothèque interne du kernel almond, notamment Input. Pour obtenir la liste des imports définis d'almond, consultez almond imports.
  • L'enregistrement direct dans log4j n'est pas pris en charge.
  • Dans l'interface utilisateur, la liste déroulante des schémas de dataframe n'est pas prise en charge.
  • Si votre Driver rencontre une erreur OOM, le REPL Scala ne se terminera pas.
  • //connector/sql-aws-connectors:sql-aws-connectors n'est pas dans la cible bazel du REPL Scala, utilisez les résultats dans ClassNotFoundException.
  • Le noyau Scala est incompatible avec SQLImplicits.

Limitations dépendantes de l'environnement d'exécution

Les limitations suivantes ont été résolues grâce aux mises à jour du runtime, mais peuvent toujours s'appliquer à votre charge de travail si vous utilisez un runtime plus ancien.

Prise en charge linguistique

Fonctionnalité

Version requise de Databricks Runtime

Scala

13,3 ou version ultérieure

Toutes les bibliothèques Java et Scala intégrées au runtime disponibles par default

15,4 LTS ou supérieur (pour 15,3 ou inférieur, définissez spark.databricks.scala.kernel.fullClasspath.enabled=true)

Fonctionnalité

Version requise de Databricks Runtime

Scala

13,3 ou version ultérieure

Toutes les bibliothèques Java et Scala intégrées au runtime disponibles par default

15,4 LTS ou supérieur (pour 15,3 ou inférieur, définissez spark.databricks.scala.kernel.fullClasspath.enabled=true)

Prise en charge de Spark API

Fonctionnalité

Version requise de Databricks Runtime

Spark ML

17,0 ou supérieur

Python : SparkContext (sc), spark.sparkContext, sqlContext

14.0 ou supérieur

Scala Dataset ops : map, mapPartitions, foreachPartition, flatMap, reduce, filter

15.4 LTS ou version ultérieure

Fonctionnalité

Version requise de Databricks Runtime

Spark ML

17,0 ou supérieur

Python : SparkContext (sc), spark.sparkContext, sqlContext

14.0 ou supérieur

Scala Dataset ops : map, mapPartitions, foreachPartition, flatMap, reduce, filter

15.4 LTS ou version ultérieure

Support UDF

Fonctionnalité

Version requise de Databricks Runtime

applyInPandas, mapInPandas

14.3 LTS ou version ultérieure

UDF scalaires Scala et UDAFs Scala

14.3 LTS ou version ultérieure

Importer des modules depuis des dossiers Git, des fichiers de Workspace ou des volumes dans les UDF PySpark

14.3 LTS ou version ultérieure

Utilisez des versions personnalisées de grpc, pyarrow ou protobuf dans les UDF PySpark via des bibliothèques au niveau du notebook ou du compute

14.3 LTS ou version ultérieure

UDFs Python et Pandas non scalaires, y compris les UDAFs, UDTFs et Pandas sur Spark

14.3 LTS ou version ultérieure

UDF scalaires Python et UDF Pandas

13.3 LTS ou une version ultérieure

Fonctionnalité

Version requise de Databricks Runtime

applyInPandas, mapInPandas

14.3 LTS ou version ultérieure

UDF scalaires Scala et UDAFs Scala

14.3 LTS ou version ultérieure

Importer des modules depuis des dossiers Git, des fichiers de Workspace ou des volumes dans les UDF PySpark

14.3 LTS ou version ultérieure

Utilisez des versions personnalisées de grpc, pyarrow ou protobuf dans les UDF PySpark via des bibliothèques au niveau du notebook ou du compute

14.3 LTS ou version ultérieure

UDFs Python et Pandas non scalaires, y compris les UDAFs, UDTFs et Pandas sur Spark

14.3 LTS ou version ultérieure

UDF scalaires Python et UDF Pandas

13.3 LTS ou une version ultérieure

Prise en charge du streaming

Fonctionnalité

Version requise de Databricks Runtime

transformWithStateInPandas

16,3 ou supérieur

applyInPandasWithState

14.3 LTS ou version ultérieure

Scala foreach

16,1 ou supérieur

Scala foreachBatch et flatMapGroupsWithState

16.2 ou supérieur

Scala from_avro

14,2 ou plus

Options Kafka kafka.ssl.truststore.location et kafka.ssl.keystore.location (l'emplacement spécifié doit être un emplacement externe géré par Unity Catalog)

13.3 LTS ou une version ultérieure

Scala StreamingQueryListener

16,1 ou supérieur

Python StreamingQueryListener interagissant avec des objets gérés par Unity Catalog

14.3 LTS ou version ultérieure

Fonctionnalité

Version requise de Databricks Runtime

transformWithStateInPandas

16,3 ou supérieur

applyInPandasWithState

14.3 LTS ou version ultérieure

Scala foreach

16,1 ou supérieur

Scala foreachBatch et flatMapGroupsWithState

16.2 ou supérieur

Scala from_avro

14,2 ou plus

Options Kafka kafka.ssl.truststore.location et kafka.ssl.keystore.location (l'emplacement spécifié doit être un emplacement externe géré par Unity Catalog)

13.3 LTS ou une version ultérieure

Scala StreamingQueryListener

16,1 ou supérieur

Python StreamingQueryListener interagissant avec des objets gérés par Unity Catalog

14.3 LTS ou version ultérieure

De plus, pour Python, foreachBatch présente les modifications de comportement suivantes sur Databricks Runtime 14.0 et versions ultérieures :

  • print() Les commandes écrivent la sortie dans les Logs Driver.
  • Vous ne pouvez pas accéder au sous-module dbutils.widgets à l'intérieur de la fonction.
  • Tous les fichiers, modules ou objets référencés dans la fonction doivent être sérialisables et disponibles sur Spark.

Prise en charge du réseau et du système de fichiers

Fonctionnalité

Version requise de Databricks Runtime

Connexions aux ports autres que 80 et 443

12.2 LTS ou version ultérieure

Fonctionnalité

Version requise de Databricks Runtime

Connexions aux ports autres que 80 et 443

12.2 LTS ou version ultérieure

Limitations de la configuration Spark

Avec Databricks Runtime 19 et versions ultérieures, vous ne pouvez pas définir les propriétés de configuration Spark suivantes en mode d'accès standard. La création ou la modification d'un cluster qui définit l'une de ces propriétés, ou une propriété qui commence par l'un des préfixes listés (affiché avec un .* final), échoue avec une erreur. Supprimez ces propriétés de votre configuration de cluster, de vos politiques de compute et de vos définitions de Job avant la mise à niveau.

Catégorie

Propriétés de configuration Spark restreintes

Options JVM, classpath et de bibliothèque native

spark.driver.extraJavaOptions, spark.driver.defaultJavaOptions, spark.executor.extraJavaOptions, spark.executor.defaultJavaOptions, spark.yarn.am.extraJavaOptions, spark.yarn.am.defaultJavaOptions, spark.driver.extraClassPath, spark.executor.extraClassPath, spark.driver.extraLibraryPath, spark.executor.extraLibraryPath

Injection de variables d'environnement

spark.executorEnv.*, spark.yarn.appMasterEnv.*, spark.kubernetes.driverEnv.*

Bibliothèques, JAR et fichiers

spark.jars, spark.jars.packages, spark.jars.ivy, spark.jars.ivySettings, spark.jars.repositories, spark.files, spark.archives, spark.submit.pyFiles, spark.sql.maven.additionalRemoteRepositories, spark.yarn.jars, spark.yarn.archive, spark.yarn.dist.jars, spark.yarn.dist.files, spark.yarn.dist.archives, spark.yarn.dist.pyFiles, spark.yarn.dist.forceDownloadSchemes

Fichiers JAR du Hive metastore

spark.sql.hive.metastore.jars, spark.sql.hive.metastore.jars.path

Exécutables Python et R

spark.pyspark.python, spark.pyspark.driver.python, spark.r.command, spark.r.driver.command, spark.r.shell.command

Configuration des pods Kubernetes

spark.kubernetes.container.image, spark.kubernetes.driver.container.image, spark.kubernetes.executor.container.image, spark.kubernetes.driver.podTemplateFile, spark.kubernetes.executor.podTemplateFile, spark.kubernetes.driver.volumes.*, spark.kubernetes.executor.volumes.*, spark.kubernetes.driver.secrets.*, spark.kubernetes.executor.secrets.*

Accès au système de fichiers local

spark.connect.copyFromLocalToFs.allowDestLocal, spark.sql.artifact.copyFromLocalToFs.allowDestLocal

Isolation et contrôle d'accès Databricks

spark.databricks.pyspark.enableProcessIsolation, spark.databricks.pyspark.enablePy4JSecurity, spark.databricks.pyspark.runAsLowPrivilegeUser, spark.databricks.pyspark.enableIptables, spark.databricks.pyspark.onlyAllowTrustedFilesystems, spark.databricks.pyspark.trustedFilesystems, spark.databricks.pyspark.pythonUdfsOnly, spark.databricks.acl.dfAclsEnabled, spark.databricks.acl.fileAccess.enabled, spark.databricks.acl.allowTransformUsing, spark.databricks.passthrough.enabled, spark.databricks.runtimeConfigAllowlist.enabled, spark.databricks.runtimeConfigAllowlist.extraConfs, spark.testing.databricks.runtimeConfigAllowlist.enabled, spark.databricks.sql.jdbc.enableLakeguardDriver

Catégorie

Propriétés de configuration Spark restreintes

Options JVM, classpath et de bibliothèque native

spark.driver.extraJavaOptions, spark.driver.defaultJavaOptions, spark.executor.extraJavaOptions, spark.executor.defaultJavaOptions, spark.yarn.am.extraJavaOptions, spark.yarn.am.defaultJavaOptions, spark.driver.extraClassPath, spark.executor.extraClassPath, spark.driver.extraLibraryPath, spark.executor.extraLibraryPath

Injection de variables d'environnement

spark.executorEnv.*, spark.yarn.appMasterEnv.*, spark.kubernetes.driverEnv.*

Bibliothèques, JAR et fichiers

spark.jars, spark.jars.packages, spark.jars.ivy, spark.jars.ivySettings, spark.jars.repositories, spark.files, spark.archives, spark.submit.pyFiles, spark.sql.maven.additionalRemoteRepositories, spark.yarn.jars, spark.yarn.archive, spark.yarn.dist.jars, spark.yarn.dist.files, spark.yarn.dist.archives, spark.yarn.dist.pyFiles, spark.yarn.dist.forceDownloadSchemes

Fichiers JAR du Hive metastore

spark.sql.hive.metastore.jars, spark.sql.hive.metastore.jars.path

Exécutables Python et R

spark.pyspark.python, spark.pyspark.driver.python, spark.r.command, spark.r.driver.command, spark.r.shell.command

Configuration des pods Kubernetes

spark.kubernetes.container.image, spark.kubernetes.driver.container.image, spark.kubernetes.executor.container.image, spark.kubernetes.driver.podTemplateFile, spark.kubernetes.executor.podTemplateFile, spark.kubernetes.driver.volumes.*, spark.kubernetes.executor.volumes.*, spark.kubernetes.driver.secrets.*, spark.kubernetes.executor.secrets.*

Accès au système de fichiers local

spark.connect.copyFromLocalToFs.allowDestLocal, spark.sql.artifact.copyFromLocalToFs.allowDestLocal

Isolation et contrôle d'accès Databricks

spark.databricks.pyspark.enableProcessIsolation, spark.databricks.pyspark.enablePy4JSecurity, spark.databricks.pyspark.runAsLowPrivilegeUser, spark.databricks.pyspark.enableIptables, spark.databricks.pyspark.onlyAllowTrustedFilesystems, spark.databricks.pyspark.trustedFilesystems, spark.databricks.pyspark.pythonUdfsOnly, spark.databricks.acl.dfAclsEnabled, spark.databricks.acl.fileAccess.enabled, spark.databricks.acl.allowTransformUsing, spark.databricks.passthrough.enabled, spark.databricks.runtimeConfigAllowlist.enabled, spark.databricks.runtimeConfigAllowlist.extraConfs, spark.testing.databricks.runtimeConfigAllowlist.enabled, spark.databricks.sql.jdbc.enableLakeguardDriver