将自动加载程序与 Unity Catalog 配合使用
自动加载程序可以安全地从配置 Unity Catalog 的外部位置引入数据。 要详细了解如何使用 Unity Catalog 安全地连接存储,请参阅使用 Unity Catalog 连接到云对象存储和服务。 自动加载程序依赖于结构化流式处理进行增量处理;有关建议和限制,请参阅将 Unity Catalog 与结构化流式处理配合使用。
备注
在 Databricks Runtime 11.3 LTS 及更高版本中,可以将自动加载程序与共享或单用户访问模式结合使用。
默认支持目录列表模式。 仅单用户计算支持文件通知模式。
可以使用自动加载程序从 Unity Catalog 管理的任何外部位置引入数据。 必须对外部位置具有 READ FILES
权限。
备注
Azure Data Lake Storage Gen2 是 Unity Catalog 唯一支持的 Azure 存储类型。
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 |
读取文件、写入文件、创建表 |
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"))