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

若要查询动态视图、你在基础表和视图上没有 SELECT 的视图,以及具有行筛选器或列掩码的表,请使用以下方式之一:

  • SQL 仓库。

  • 具有共享访问模式的计算。

  • Databricks Runtime 15.4 LTS 或更高版本上具有单用户访问模式的计算。

    Databricks Runtime 15.4 LTS 及更高版本支持单用户计算的精细访问控制。 若要利用 Databricks Runtime 15.4 LTS 及更高版本中提供的数据筛选,请验证工作区是否 已启用无服务器计算

    无服务器计算处理数据筛选,允许访问视图,而无需对其基础表和视图拥有权限。 由于无服务器计算处理数据筛选,因此使用单个用户计算查询视图时,可能会产生无服务器计算费用。 有关详细信息,请参阅单用户计算上的精细访问控制

Unity Catalog 单用户访问模式的流式处理表和具体化视图限制

在 Databricks Runtime 15.3 及更低版本上,如果这些表归其他用户所有,则不能使用单个用户计算来查询使用 Delta Live Tables 管道创建的表,包括流式处理表具体化视图。 创建表的用户是所有者。

若要查询增量实时表和其他用户拥有的流式处理表和具体化视图,请使用下列方法之一:

  • SQL 仓库。

  • Databricks Runtime 13.3 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.sparkContextsqlContext 不可用于任何 Databricks Runtime 中的 Scala,并且在 Databricks Runtime 14.0 及更高版本中的 Python 中不受支持。
    • Databricks 建议使用 spark 变量来与 SparkSession 实例进行交互。
    • 也不支持以下 sc 函数:emptyRDDrangeinit_batched_serializerparallelizepickleFiletextFilewholeTextFilesbinaryFilesbinaryRecordssequenceFilenewAPIHadoopFilenewAPIHadoopRDDhadoopFilehadoopRDDunionrunJobsetSystemPropertyuiWebUrlstopsetJobGroupsetLocalPropertygetConf
  • 以下 Scala 数据集 API 操作需要 Databricks Runtime 15.4 LTS 或更高版本:mapmapPartitionsforeachPartitionflatMapreducefilter

Unity Catalog 共享访问模式的 UDF 处理限制和要求

对于共享访问模式,用户定义的函数 (UDF) 具有以下限制:

  • 不支持 Hive UDF。

  • applyInPandasmapInPandas 需要 Databricks Runtime 14.3 或更高版本。

  • Scala 标量 UDF 需要 Databricks Runtime 14.2 或更高版本。 其他 Scala UDF 和 UDAF 不受支持。

  • 在 Databricks Runtime 14.2 及更低版本中,不支持通过笔记本范围或群集范围的库在 PySpark UDF 中使用自定义版本的 grpcpyarrowprotobuf,因为始终会首选已安装的版本。 若要查找已安装的库的版本,请参阅特定 Databricks Runtime 版本发行说明的“系统环境”部分

  • Python 标量 UDF 和 Pandas UDF 需要 Databricks Runtime 13.3 LTS 或更高版本。

  • 非标量 Python 和 Pandas UDF(包括 Spark 上的 UDAF、UDF 和 Pandas)需要 Databricks Runtime 14.3 LTS 或更高版本。

请参阅 Unity Catalog 中的用户定义函数 (UDF)

Unity Catalog 共享访问模式的流式处理限制和要求

注意

一些列出的 Kafka 选项在 Azure Databricks 上用于受支持的配置时,支持有限。 所有列出的 Kafka 限制对于批处理和流处理均有效。 请参阅使用 Apache Kafka 和 Azure Databricks 进行流处理

  • 对于 Scala,不支持 foreachforeachBatchStreamingListenersFlatMapGroupWithState
  • 对于 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 与结构化流配合使用