Unity Catalog 的计算访问模式限制
Databricks 建议对大部分工作负载使用 Unity Catalog 和共享访问模式。 本文概述了使用 Unity Catalog 的每个访问模式的限制和要求。 有关访问模式的详细信息,请参阅访问模式。
Databricks 建议使用计算策略来简化大多数用户的配置选项。 请参阅创建和管理计算策略。
注意
无隔离共享是不支持 Unity Catalog 的旧访问模式。
重要
Init 脚本和库对各访问模式和 Databricks Runtime 版本提供不同的支持。 请参阅可以在哪里安装 init 脚本?和群集范围的库。
Unity Catalog 上的单用户访问模式限制
Unity Catalog 上的单用户访问模式具有以下限制。 除了所有 Unity Catalog 访问模式的常规限制外,还存在这些限制。 请参阅 Unity Catalog 的常规限制。
Unity Catalog 单用户访问模式的精细访问控制限制
在 Databricks Runtime 15.3 及更低版本上,不支持单用户计算上的精细访问控制。 具体而言:
要查询动态视图、基础表和视图上没有 SELECT
的视图以及具有行筛选器或列掩码的表,请使用以下项之一:
SQL 仓库。
具有共享访问模式的计算。
在 Databricks Runtime 15.4 LTS 或更高版本上(公共预览版)具有单用户访问模式的计算。
Databricks Runtime 15.4 LTS 及更高版本支持单用户计算的精细访问控制。 若要利用 Databricks Runtime 15.4 LTS 及更高版本中提供的数据筛选,你还必须验证你的工作区是否已启用无服务器计算,因为支持精细访问控制的数据筛选功能在无服务器计算上运行。 因此,当你使用单用户计算运行数据筛选操作时,可能会对无服务器计算资源收费。 请参阅单用户计算上的精细访问控制。
Unity Catalog 单用户访问模式的流式处理限制
- Databricks Runtime 11.3 LTS 及更低版本不支持异步检查点。
StreamingQueryListener
需要 Databricks Runtime 15.1 或更高版本才能在单个用户计算上使用凭据或与 Unity Catalog 管理的对象交互。
Unity Catalog 上的共享访问模式限制
Unity Catalog 中的共享访问模式具有以下限制。 除了所有 Unity Catalog 访问模式的常规限制外,还存在这些限制。 请参阅 Unity Catalog 的常规限制。
不支持 Databricks Runtime ML 和 Spark 机器学习库 (MLlib)。
不支持 Spark-submit 作业。
在 Databricks Runtime 13.3 及更高版本中,单个行不得超过 128MB。
PySpark UDF 无法访问 Git 文件夹、工作区文件或卷,以导入 Databricks Runtime 14.2 及更低版本上的模块。
DBFS 根和装载不支持 FUSE。
将共享访问模式与凭据传递配合使用时,将禁用 Unity Catalog 功能。
不支持自定义容器。
Unity Catalog 共享访问模式的语言支持
- 不支持 R。
- Databricks Runtime 13.3 及更高版本中支持 Scala。
- 在 Databricks Runtime 15.4 LTS 及更高版本中,与 Databricks Runtime 捆绑的所有 Java 或 Scala 库(JAR 文件)都可以在 Unity Catalog 访问模式下的计算中使用。
- 对于使用共享访问模式的计算上的 Databricks Runtime 15.3 或更高版本,请将 Spark 配置
spark.databricks.scala.kernel.fullClasspath.enabled
设置为true
。
Unity Catalog 共享访问模式的 Spark API 限制和要求
- 不支持 RDD API。
- 仅当使用外部位置访问存储位置时,才支持直接从云存储读取数据的 DBUtils 和其他客户端。 请参阅创建外部位置以将云存储连接到 Azure Databricks。
- Spark 上下文 (
sc
)、spark.sparkContext
和sqlContext
不可用于任何 Databricks Runtime 中的 Scala,并且在 Databricks Runtime 14.0 及更高版本中的 Python 中不受支持。- 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
。
- Databricks 建议使用
- 以下 Scala 数据集 API 操作需要 Databricks Runtime 15.4 LTS 或更高版本:
map
、mapPartitions
、foreachPartition
、flatMap
、reduce
和filter
。
Unity Catalog 共享访问模式的 UDF 处理限制和要求
对于共享访问模式,用户定义的函数 (UDF) 具有以下限制:
不支持 Hive UDF。
applyInPandas
和mapInPandas
需要 Databricks Runtime 14.3 或更高版本。Scala 标量 UDF 需要 Databricks Runtime 14.2 或更高版本。 其他 Scala UDF 和 UDAF 不受支持。
在 Databricks Runtime 14.2 及更低版本中,不支持通过笔记本范围或群集范围的库在 PySpark UDF 中使用自定义版本的
grpc
、pyarrow
或protobuf
,因为始终会首选已安装的版本。 若要查找已安装的库的版本,请参阅特定 Databricks Runtime 版本发行说明的“系统环境”部分。Python 标量 UDF 和 Pandas UDF 需要 Databricks Runtime 13.3 LTS 或更高版本。 不支持其他 Python UDF,包括 UDAF、UDF 和 Spark 上的 Pandas。
请参阅 Unity Catalog 中的用户定义函数 (UDF)。
Unity Catalog 共享访问模式的流式处理限制和要求
注意
一些列出的 Kafka 选项在 Azure Databricks 上用于受支持的配置时,支持有限。 所有列出的 Kafka 限制对于批处理和流处理均有效。 请参阅使用 Apache Kafka 和 Azure Databricks 进行流处理。
- 对于 Scala,不支持
foreach
、foreachBatch
、StreamingListeners
、FlatMapGroupWithState
。 - 对于 Python,
foreachBatch
在 Databricks Runtime 14.0 及更高版本中具有以下行为更改:print()
命令会将输出写入驱动程序日志。- 无法访问函数内的
dbutils.widgets
子模块。 - 函数中引用的任何文件、模块或对象都必须可序列化并在 Spark 上可用。
- 对于 Scala,
from_avro
需要 Databricks Runtime 14.2 或更高版本。 applyInPandasWithState
需要 Databricks Runtime 14.3 LTS 或更高版本。- 不支持使用套接字源。
- 将
option("cleanSource", "archive")
与 Unity Catalog 管理的数据源配合使用时,sourceArchiveDir
必须位于源所在的同一外部位置。 - 对于 Kafka 源和接收器,不支持以下选项:
kafka.sasl.client.callback.handler.class
kafka.sasl.login.callback.handler.class
kafka.sasl.login.class
kafka.partition.assignment.strategy
- 以下 Kafka 选项在 Databricks Runtime 13.3 LTS 及更高版本中不受支持,在 Databricks Runtime 12.2 LTS 中不受支持。 只能为这些选项指定 Unity Catalog 管理的外部位置:
kafka.ssl.truststore.location
kafka.ssl.keystore.location
StreamingQueryListener
需要 Databricks Runtime 14.3 LTS 或更高版本才能在共享计算上使用凭据或与 Unity Catalog 管理的对象交互。
Unity Catalog 共享访问模式的网络和文件系统访问限制和要求
必须在计算节点上运行命令,因为低特权用户禁止访问文件系统的敏感部分。
在 Databricks Runtime 11.3 LTS 及更低版本中,只能创建到端口 80 和 443 的网络连接。
无法连接到实例元数据服务或 Azure WireServer。
Unity Catalog 的常规限制
以下限制适用于所有已启用 Unity Catalog 的访问模式。
Unity Catalog 的流式处理限制
- 不支持 Apache Spark 连续处理模式。 请参阅“Spark 结构化流式处理编程指南”中的连续处理。
另请参阅 Unity Catalog 单用户访问模式的流式处理限制和 Unity Catalog 共享访问模式的流式处理限制和要求。
有关 Unity Catalog 流式处理的详细信息,请参阅将 Unity Catalog 与结构化流配合使用。