将自动加载程序与 Unity Catalog 配合使用

自动加载程序可以安全地从配置 Unity Catalog 的外部位置引入数据。 要详细了解如何使用 Unity Catalog 安全地连接存储,请参阅使用 Unity Catalog 连接到云对象存储和服务。 自动加载程序依赖于结构化流式处理进行增量处理;有关建议和限制,请参阅将 Unity Catalog 与结构化流式处理配合使用

备注

在 Databricks Runtime 11.3 LTS 及更高版本中,可以将自动加载程序与共享或单用户访问模式结合使用。

默认支持目录列表模式。 仅单用户计算支持文件通知模式。

使用自动加载程序从 Unity Catalog 管理的外部位置引入数据

可以使用自动加载程序从 Unity Catalog 管理的任何外部位置引入数据。 必须对外部位置具有 READ FILES 权限。

备注

Azure Data Lake Storage Gen2 是 Unity Catalog 唯一支持的 Azure 存储类型。

为 Unity Catalog 指定自动加载程序资源的位置

Unity Catalog 安全模型假定工作负载中引用的所有存储位置都由 Unity Catalog 管理。 Databricks 建议始终在由 Unity Catalog 管理的存储位置存储检查点和架构演变信息。 Unity Catalog 不支持在表目录下嵌套检查点或架构推理和演变文件。

示例

以下示例假定执行用户对目标表具有所有者权限,并具有以下配置和授权:

存储位置 授予
abfss://autoloader-source@<storage-account>.dfs.core.chinacloudapi.cn/json-data READ FILES
abfss://dev-bucket@<storage-account>.dfs.core.chinacloudapi.cn 读取文件、写入文件、创建表

使用自动加载程序加载到 Unity Catalog 托管表

checkpoint_path = "abfss://dev-bucket@<storage-account>.dfs.core.chinacloudapi.cn/_checkpoint/dev_table"

(spark.readStream
  .format("cloudFiles")
  .option("cloudFiles.format", "json")
  .option("cloudFiles.schemaLocation", checkpoint_path)
  .load("abfss://autoloader-source@<storage-account>.dfs.core.chinacloudapi.cn/json-data")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .trigger(availableNow=True)
  .toTable("dev_catalog.dev_database.dev_table"))