本页包含标准计算的要求和限制列表。 如果使用经典计算,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函数: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.executor.extraJavaOptions。使用
spark.createDataFrame本地数据创建数据帧时,行大小不能超过 128MB。不支持 RDD API。
UDF 限制
- 不支持 Hive UDF。 而是 在 Unity 目录中使用 UDF。
流式处理限制
注释
一些列出的 Kafka 选项在 Azure Databricks 上用于受支持的配置时,支持有限。 所有列出的 Kafka 限制对于批处理和流处理均有效。 请参阅使用 Apache Kafka 和 Azure Databricks 进行流处理。
不能使用
statestore和state-metadata格式来查询有状态流式处理查询的状态信息。transformWithState和相关的 API 不受支持。不支持使用套接字源。
将
sourceArchiveDir与 Unity Catalog 管理的数据源配合使用时,option("cleanSource", "archive")必须位于源所在的同一外部位置。对于 Kafka 源和接收器,不支持以下选项:
kafka.sasl.client.callback.handler.classkafka.sasl.login.callback.handler.classkafka.sasl.login.classkafka.partition.assignment.strategy
网络和文件系统限制
- 标准计算以低特权用户身份运行命令,禁止访问文件系统的敏感部分。
- 不支持 DBFS 的 POSIX 样式路径 (
/)。 - 只有具有 ANY FILE 权限的工作区管理员和用户才能使用 DBFS 直接与文件交互。
- 无法连接到实例元数据服务或 Azure WireServer。
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: |
14.0 或更高版本 |
Scala Dataset作:map、、mapPartitions、foreachPartitionflatMap、reduce、filter |
15.4 LTS 或更高版本 |
UDF 支持
| 功能 / 特点 | 必需的 Databricks Runtime 版本 |
|---|---|
applyInPandas、mapInPandas |
14.3 LTS 或更高版本 |
| 标量 UDF 和 Scala UDAF | 14.3 LTS 或更高版本 |
| 从 PySpark UDF 中的 Git 文件夹、工作区文件或卷导入模块 | 14.3 LTS 或更高版本 |
通过笔记本或计算范围的库使用自定义版本的 grpcpyarrowprotobuf PySpark UDF |
14.3 LTS 或更高版本 |
| 非标量 Python 和 Pandas UDF,包括 SPARK 上的 UDAF、UDF 和 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 或更高版本 |
与 Unity 目录托管对象交互的 Python StreamingQueryListener |
14.3 LTS 或更高版本 |
此外,对于 Python, foreachBatch 在 Databricks Runtime 14.0 及更高版本上具有以下行为更改:
-
print()命令会将输出写入驱动程序日志。 - 无法访问函数内的
dbutils.widgets子模块。 - 函数中引用的任何文件、模块或对象都必须可序列化并在 Spark 上可用。
网络和文件系统支持
| 功能 / 特点 | 必需的 Databricks Runtime 版本 |
|---|---|
| 与 80 和 443 以外的端口的连接 | 12.2 LTS 或更高版本 |