本页包含标准计算的要求和限制列表。 如果使用经典计算,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.sparkContext和sqlContext不支持 Scala:- Azure Databricks建议使用
spark变量与SparkSession实例进行交互。 - 也不支持以下
sc函数:emptyRDD、range、init_batched_serializer、parallelize、pickleFile、textFile、wholeTextFiles、binaryFiles、binaryRecords、sequenceFile、newAPIHadoopFile、newAPIHadoopRDD、hadoopFile、hadoopRDD、union、runJob、setSystemProperty、uiWebUrl、stop、setJobGroup、setLocalProperty、getConf。
- Azure Databricks建议使用
不支持设置某些 Spark 配置 属性。 创建或编辑设置受限属性的群集失败,并出现错误。 有关完整列表,请参阅 Spark 配置限制。
使用
spark.createDataFrame本地数据创建数据帧时,行大小不能超过 128MB。不支持 RDD API。
Spark Connect(在 Databricks Runtime 的较新版本中使用)将分析和名称解析推迟到执行时间,这可能会更改代码的行为。 请参阅 “将 Spark 连接与 Spark 经典版进行比较”。
UDF 限制
- 不支持 Hive UDF。 而是使用 Unity 目录中的 UDFs。
- 不能在 高阶函数中使用 Scala UDF。
流媒体限制
注释
一些列出的 Kafka 选项在用于Azure Databricks上支持的配置时具有有限的支持。 所有列出的 Kafka 限制对于批处理和流处理均有效。 请参阅 “连接到 Apache Kafka”。
不支持使用套接字源。
将
sourceArchiveDir与 Unity Catalog 管理的数据源配合使用时,option("cleanSource", "archive")必须位于源所在的同一外部位置。对于 Kafka 源和接收器,不支持以下选项:
kafka.sasl.client.callback.handler.classkafka.sasl.login.callback.handler.classkafka.sasl.login.classkafka.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_KEY、AWS_REGIONAWS_DEFAULT_REGION - Azure凭据:
AZURE_CLIENT_ID、AZURE_CLIENT_SECRET、AZURE_TENANT_ID
- Databricks 连接:
DATABRICKS_HOST,DATABRICKS_TOKEN - 区域设置和时区:
TZ、LANGLC_ALL - 并行度和线程处理:
OMP_NUM_THREADS、OPENBLAS_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.sparkContext、sqlContext |
14.0 或更高版本 |
Scala Dataset操作:map、mapPartitions、foreachPartition、flatMap、reduce、filter |
15.4 LTS 或更高版本 |
UDF 支持
| 功能 / 特点 | 所需的 Databricks Runtime 版本 |
|---|---|
applyInPandas、mapInPandas |
14.3 LTS 或更高版本 |
| Scala 标量 UDF 和 Scala UDAF | 14.3 LTS 或更高版本 |
| 从 PySpark UDF 中的 Git 文件夹、工作区文件或卷导入模块 | 14.3 LTS 或更高版本 |
通过笔记本范围或计算范围的库,在 PySpark UDF 中使用 grpc、pyarrow 或 protobuf 的自定义版本。 |
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 foreachBatch 和 flatMapGroupsWithState |
16.2 或更高版本 |
Scala from_avro |
14.2 或更高版本 |
Kafka 选项 kafka.ssl.truststore.location 和 kafka.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.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 |
| 环境变量注入 |
spark.executorEnv.*、spark.yarn.appMasterEnv.*、spark.kubernetes.driverEnv.* |
| 库、JAR 和文件 |
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 |
| Hive 元存储 JAR 文件 |
spark.sql.hive.metastore.jars、spark.sql.hive.metastore.jars.path |
| Python 和 R 可执行文件 |
spark.pyspark.python、spark.pyspark.driver.python、spark.r.command、spark.r.driver.command、spark.r.shell.command |
| Kubernetes Pod 配置 |
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.* |
| 本地文件系统访问 |
spark.connect.copyFromLocalToFs.allowDestLocal、spark.sql.artifact.copyFromLocalToFs.allowDestLocal |
| Azure 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 |