标准计算要求和限制

本页包含标准计算的要求和限制列表。 如果使用经典计算,Databricks 建议使用标准访问模式,除非工作负荷依赖于下面列出的限制之一。

重要

Init 脚本和库对各访问模式和 Databricks Runtime 版本提供不同的支持。 请参阅 初始化脚本可以安装在哪里?计算范围库

当前的标准计算限制

以下部分列出了基于最新 Databricks Runtime 版本的标准计算的限制。 有关适用于较旧 Databricks Runtime 版本的限制,请参阅 与运行时相关的限制

如果工作负荷需要这些功能,请改用 专用计算

常规标准计算限制

  • 不支持用于 ML 的 Databricks Runtime。 而是安装任何未与 Databricks Runtime 捆绑在一起的 ML 库,将其作为计算范围内的库进行安装。
  • 不支持启用 GPU 的计算。
  • 不支持 Spark-submit 作业任务。 请改用 JAR 任务
  • DBUtils 和其他客户端只能使用 外部位置从云存储中读取数据。
  • DBFS 根目录和挂载点不支持 FUSE。

语言限制

  • 不支持 R。

Spark API 限制

  • Spark 上下文(sc)、spark.sparkContextsqlContext 不支持 Scala:

    • Azure Databricks建议使用 spark 变量与 SparkSession 实例进行交互。
    • 也不支持以下 sc 函数:emptyRDDrangeinit_batched_serializerparallelizepickleFiletextFilewholeTextFilesbinaryFilesbinaryRecordssequenceFilenewAPIHadoopFilenewAPIHadoopRDDhadoopFilehadoopRDDunionrunJobsetSystemPropertyuiWebUrlstopsetJobGroupsetLocalPropertygetConf
  • 不支持设置某些 Spark 配置 属性。 创建或编辑设置受限属性的群集失败,并出现错误。 有关完整列表,请参阅 Spark 配置限制

  • 使用 spark.createDataFrame本地数据创建数据帧时,行大小不能超过 128MB。

  • 不支持 RDD API。

  • Spark Connect(在 Databricks Runtime 的较新版本中使用)将分析和名称解析推迟到执行时间,这可能会更改代码的行为。 请参阅 “将 Spark 连接与 Spark 经典版进行比较”。

UDF 限制

流媒体限制

注释

一些列出的 Kafka 选项在用于Azure Databricks上支持的配置时具有有限的支持。 所有列出的 Kafka 限制对于批处理和流处理均有效。 请参阅 “连接到 Apache Kafka”。

  • 不支持使用套接字源。

  • sourceArchiveDir 与 Unity Catalog 管理的数据源配合使用时,option("cleanSource", "archive") 必须位于源所在的同一外部位置。

  • 对于 Kafka 源和接收器,不支持以下选项:

    • kafka.sasl.client.callback.handler.class
    • kafka.sasl.login.callback.handler.class
    • kafka.sasl.login.class
    • kafka.partition.assignment.strategy
  • Python foreachBatch 不支持 ThreadPoolExecutor 或多线程执行。 多线程执行可能不会引发错误,但可能会导致数据损坏或结果不一致。

网络和文件系统限制

  • 标准计算以低特权用户身份运行命令,禁止访问文件系统的敏感部分。
  • 不支持 DBFS 的 POSIX 样式路径 (/)。
  • 只有具有 ANY FILE 权限的工作区管理员和用户才能使用 DBFS 直接与文件交互。
  • 无法连接到实例元数据服务或 Azure WireServer。

环境变量限制

标准计算上的 Spark 引擎和 init 脚本只能使用预定义的环境变量集。 在群集上设置但未在此集中设置的环境变量仍可供用户代码使用,包括 UDF,但不适用于 Spark 引擎或 init 脚本

此集包括常见的配置、凭据和运行时变量。 以下示例并不详尽:

  • 网络和代理:HTTP_PROXY、、 HTTPS_PROXYNO_PROXY
  • TLS 证书: REQUESTS_CA_BUNDLESSL_CERT_FILE
  • AWS 凭据和区域:AWS_ACCESS_KEY_ID、、AWS_SECRET_ACCESS_KEYAWS_REGIONAWS_DEFAULT_REGION
  • Azure凭据:AZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_TENANT_ID
  • Databricks 连接:DATABRICKS_HOSTDATABRICKS_TOKEN
  • 区域设置和时区: TZLANGLC_ALL
  • 并行度和线程处理:OMP_NUM_THREADSOPENBLAS_NUM_THREADS、、 MKL_NUM_THREADSNUMEXPR_NUM_THREADS
  • 可观测性:DD_API_KEY、、 DD_SITEDD_ENV
  • Unity 目录默认值: CATALOGCATALOG_NAME

Scala 内核限制

在标准计算上使用 scala 内核时,以下限制适用:

  • 如果某些类与内部杏仁内核库冲突,则不能在代码中使用,尤其是 Input。 有关杏仁定义的进口列表,请参阅 杏仁进口
  • 不支持直接登录到 log4j。
  • 在 UI 中,不支持数据帧架构下拉列表。
  • 如果驱动程序达到 OOM,Scala REPL 不会终止。
  • //connector/sql-aws-connectors:sql-aws-connectors 不在 Scala REPL 的 bazel 目标中,使用它会导致 ClassNotFoundException
  • Scala 内核与 SQLImplicits 不兼容。

运行时依赖的限制

通过运行时更新解决了以下限制,但如果使用较旧的运行时,仍可能适用于工作负荷。

语言支持

功能 / 特点 所需的 Databricks Runtime 版本
Scala 13.3 或更高版本
默认情况下自带所有运行时捆绑的 Java 库和 Scala 库 15.4 LTS 或更高版本(对于 15.3 或更低版本,设置 spark.databricks.scala.kernel.fullClasspath.enabled=true

Spark API 支持

功能 / 特点 所需的 Databricks Runtime 版本
Spark ML 17.0 或更高版本
Python:SparkContext (sc)spark.sparkContextsqlContext 14.0 或更高版本
Scala Dataset操作:mapmapPartitionsforeachPartitionflatMapreducefilter 15.4 LTS 或更高版本

UDF 支持

功能 / 特点 所需的 Databricks Runtime 版本
applyInPandasmapInPandas 14.3 LTS 或更高版本
Scala 标量 UDF 和 Scala UDAF 14.3 LTS 或更高版本
从 PySpark UDF 中的 Git 文件夹、工作区文件或卷导入模块 14.3 LTS 或更高版本
通过笔记本范围或计算范围的库,在 PySpark UDF 中使用 grpcpyarrowprotobuf 的自定义版本。 14.3 LTS 或更高版本
非标量Python和 Pandas UDFs,包括 UDAFs、UDTFs 和 Spark 上的 Pandas 14.3 LTS 或更高版本
Python标量 UDF 和 Pandas UDF 13.3 LTS 或更高版本

流式处理支持

功能 / 特点 所需的 Databricks Runtime 版本
transformWithStateInPandas 16.3 或更高版本
applyInPandasWithState 14.3 LTS 或更高版本
Scala foreach 16.1 或更高版本
Scala foreachBatchflatMapGroupsWithState 16.2 或更高版本
Scala from_avro 14.2 或更高版本
Kafka 选项 kafka.ssl.truststore.locationkafka.ssl.keystore.location (指定位置必须是 Unity 目录管理的外部位置) 13.3 LTS 或更高版本
Scala StreamingQueryListener 16.1 或更高版本
Python StreamingQueryListener与 Unity Catalog 管理的对象交互 14.3 LTS 或更高版本

此外,对于 Python,foreachBatch在 Databricks Runtime 14.0 及更高版本中行为发生以下更改:

  • print() 命令会将输出写入驱动程序日志。
  • 无法访问函数内的 dbutils.widgets 子模块。
  • 函数中引用的任何文件、模块或对象都必须可序列化并在 Spark 上可用。

网络和文件系统支持

功能 / 特点 所需的 Databricks Runtime 版本
与 80 和 443 以外的端口的连接 12.2 LTS 或更高版本

Spark 配置限制

在 Databricks Runtime 19 及更高版本上,无法在标准访问模式下设置以下 Spark 配置属性。 创建或编辑群集时,如果设置了上述任一属性,或设置了名称以前面列出的某个前缀开头的属性(这些前缀以尾随的 .* 表示),操作将报错并失败。 在升级之前,请从群集配置、计算策略和作业定义中删除这些属性。

Category 受限的 Spark 配置属性
JVM、classpath 和本地库选项 spark.driver.extraJavaOptionsspark.driver.defaultJavaOptionsspark.executor.extraJavaOptionsspark.executor.defaultJavaOptionsspark.yarn.am.extraJavaOptionsspark.yarn.am.defaultJavaOptionsspark.driver.extraClassPathspark.executor.extraClassPathspark.driver.extraLibraryPathspark.executor.extraLibraryPath
环境变量注入 spark.executorEnv.*spark.yarn.appMasterEnv.*spark.kubernetes.driverEnv.*
库、JAR 和文件 spark.jarsspark.jars.packagesspark.jars.ivyspark.jars.ivySettingsspark.jars.repositoriesspark.filesspark.archivesspark.submit.pyFilesspark.sql.maven.additionalRemoteRepositoriesspark.yarn.jarsspark.yarn.archivespark.yarn.dist.jarsspark.yarn.dist.filesspark.yarn.dist.archivesspark.yarn.dist.pyFilesspark.yarn.dist.forceDownloadSchemes
Hive 元存储 JAR 文件 spark.sql.hive.metastore.jarsspark.sql.hive.metastore.jars.path
Python 和 R 可执行文件 spark.pyspark.pythonspark.pyspark.driver.pythonspark.r.commandspark.r.driver.commandspark.r.shell.command
Kubernetes Pod 配置 spark.kubernetes.container.imagespark.kubernetes.driver.container.imagespark.kubernetes.executor.container.imagespark.kubernetes.driver.podTemplateFilespark.kubernetes.executor.podTemplateFilespark.kubernetes.driver.volumes.*spark.kubernetes.executor.volumes.*spark.kubernetes.driver.secrets.*spark.kubernetes.executor.secrets.*
本地文件系统访问 spark.connect.copyFromLocalToFs.allowDestLocalspark.sql.artifact.copyFromLocalToFs.allowDestLocal
Azure Databricks 隔离和访问控制 spark.databricks.pyspark.enableProcessIsolationspark.databricks.pyspark.enablePy4JSecurityspark.databricks.pyspark.runAsLowPrivilegeUserspark.databricks.pyspark.enableIptablesspark.databricks.pyspark.onlyAllowTrustedFilesystemsspark.databricks.pyspark.trustedFilesystemsspark.databricks.pyspark.pythonUdfsOnlyspark.databricks.acl.dfAclsEnabledspark.databricks.acl.fileAccess.enabledspark.databricks.acl.allowTransformUsingspark.databricks.passthrough.enabledspark.databricks.runtimeConfigAllowlist.enabledspark.databricks.runtimeConfigAllowlist.extraConfsspark.testing.databricks.runtimeConfigAllowlist.enabledspark.databricks.sql.jdbc.enableLakeguardDriver