自动加载程序可以安全地从配置 Unity Catalog 的外部位置引入数据。 若要详细了解如何使用 Unity 目录安全地连接存储,请参阅 使用 Unity 目录连接到云对象存储。 自动加载程序依赖于结构化流式处理进行增量处理;有关建议和限制,请参阅将 Unity Catalog 与结构化流式处理配合使用。
注意
在 Databricks Runtime 11.3 LTS 及更高版本中,可以将自动加载程序与标准或专用访问模式(以前共享和单用户访问模式)配合使用。
默认支持目录列表模式。 只有具有专用访问模式的计算才支持文件通知模式。
为 Unity Catalog 指定 Auto Loader 资源的位置
Unity Catalog 安全模型假定工作负载中引用的所有存储位置都由 Unity Catalog 管理。 Databricks 建议始终在由 Unity Catalog 管理的存储位置存储检查点和架构演变信息。 Unity Catalog 不支持在表目录下嵌套检查点或架构推理和演变文件。
使用 Unity 目录从云存储引入数据
以下示例假定执行用户具有 READ FILES 对外部位置的权限、目标表的所有者权限以及以下配置和授权。
注意
Azure Data Lake Storage 是唯一受 Unity 目录支持的 Azure 存储类型。
| 存储位置 | 授予 |
|---|---|
abfss://autoloader-source@<storage-account>.dfs.core.windows.net/json-data |
READ FILES |
abfss://dev-bucket@<storage-account>.dfs.core.windows.net |
READ FILES、WRITE FILES、CREATE TABLE |
使用Auto Loader加载到Unity Catalog托管表
以下示例演示如何使用自动加载程序将数据引入 Unity 目录托管表。
Python
checkpoint_path = "abfss://dev-bucket@<storage-account>.dfs.core.windows.net/_checkpoint/dev_table"
(spark.readStream
.format("cloudFiles")
.option("cloudFiles.format", "json")
.option("cloudFiles.schemaLocation", checkpoint_path)
.load("abfss://autoloader-source@<storage-account>.dfs.core.windows.net/json-data")
.writeStream
.option("checkpointLocation", checkpoint_path)
.trigger(availableNow=True)
.toTable("dev_catalog.dev_database.dev_table"))
SQL
CREATE OR REFRESH STREAMING TABLE dev_catalog.dev_database.dev_table
AS SELECT * FROM STREAM read_files(
'abfss://autoloader-source@<storage-account>.dfs.core.windows.net/json-data',
format => 'json'
);
在 Lakeflow Spark 声明性管道中的read_filesCREATE STREAMING TABLE语句中使用时,检查点和模式位置会被自动管理。