本文详细介绍了特定于 DLT 管道的配置和注意事项,这些管道被配置为将数据发布到旧版 Hive 元存储。 Databricks 建议对所有新管道使用 Unity Catalog。 请参阅将 Unity Catalog 与 DLT 管道配合使用。
注释
本文讨论管道当前默认发布模式的功能。 在 2025 年 2 月 5 日之前创建的管道可能使用旧版发布模式和 LIVE
虚拟架构。 请参阅 LIVE 架构(旧版)。
如何在旧 Hive 元存储中查询流式处理表和具体化视图
更新完成后,可以查看架构和表、查询数据或使用下游应用程序中的数据。
发布后,可以从有权访问目标架构的任何环境查询 DLT 表。 这包括 Databricks SQL、笔记本和其他 DLT 管道。
重要
创建 target
配置时,只会发布表和关联的元数据。 视图不会发布到元存储。
配置数据流水线以发布到 Hive Metastore
创建新管道时,可以在“存储选项”下指定“Hive 元存储”,以发布到旧版 Hive 元存储。 发布到 Hive 元存储时,必须指定默认目标架构。 请参阅 配置 DLT 管道。
指定存储位置
可以为一个将内容发布到 Hive 元存储的管道指定存储位置。 指定位置的主要目的是控制管道写入的数据的对象存储位置。 Databricks 建议始终专门设置存储位置,以避免写入 DBFS 根目录。
由于 DLT 管道的所有表、数据、检查点和元数据都由 DLT 完全管理,因此大多数与 DLT 数据集的交互都是通过注册到 Hive 元存储或 Unity 目录的表进行的。
云存储配置
若要访问 Azure 存储,必须使用群集配置中的 spark.conf
设置配置所需的参数(包括访问令牌)。 有关配置对 Azure Data Lake Storage (ADLS) 存储帐户的访问的示例,请参阅使用 管道中的机密安全地访问存储凭据。
处理 Hive 元存储流水线的事件日志
如果管道将表发布到 Hive 元存储,则事件日志存储在 /system/events
位置下的 storage
中。 例如,如果已将管道 storage
设置配置为 /Users/username/data
,则事件日志存储在 DBFS 的 /Users/username/data/system/events
路径中。
如果尚未配置 storage
设置,则默认的事件日志位置为 DBFS 中的 /pipelines/<pipeline-id>/system/events
。 例如,如果管道的 ID 为 91de5e48-35ed-11ec-8d3d-0242ac130003
,则存储位置为 /pipelines/91de5e48-35ed-11ec-8d3d-0242ac130003/system/events
。
可以创建视图以简化对事件日志的查询。 以下示例创建一个名为 event_log_raw
的临时视图。 此视图用于本文中包含的示例事件日志查询:
CREATE OR REPLACE TEMP VIEW event_log_raw
AS SELECT * FROM delta.`<event-log-path>`;
请将 <event-log-path>
替换为事件日志位置。
管道运行的每个实例称为更新。 你通常需要提取有关最近更新的信息。 运行以下查询以查找最新更新的标识符,并将其保存在 latest_update_id
临时视图中。 此视图用于本文中包含的示例事件日志查询:
CREATE OR REPLACE TEMP VIEW latest_update AS
SELECT origin.update_id AS id
FROM event_log_raw
WHERE event_type = 'create_update'
ORDER BY timestamp DESC
LIMIT 1;
可以在 Azure Databricks 笔记本或 SQL 编辑器中查询事件日志。 使用笔记本或 SQL 编辑器运行示例事件日志查询。
没有 Unity Catalog 的工作区的示例管道源代码笔记本
可以在未启用 Unity 目录的情况下将以下笔记本导入 Azure Databricks 工作区,并使用它们部署 DLT 管道。 使用“Hive 元存储”存储选项配置管道时,导入所选语言的笔记本,并在“源代码”字段中指定路径。 请参阅 配置 DLT 管道。