使用外部系统访问实体化视图和流式表

默认情况下,外部系统无法访问物化视图和流表。 Azure Databricks提供了两项功能,使数据集可供 Delta Lake 或 Iceberg 客户端使用:

  • 外部数据访问——为由管道管理的物化视图、独立物化视图和流式表启用 外部数据访问 会发布面向外部的元数据,使客户端无需完整的数据副本或单独的刷新计划,即可使用 Unity Catalog 或 Iceberg REST API。 客户端必须使用目录 REST API,并支持 Delta Lake 4.0.0 或更高版本或 Iceberg V3 规范。

    有关流水线管理和独立实体化视图及流表的外部数据访问详情,请参见 “启用流表和实体化视图的外部数据访问”。

  • 兼容性模式 (公共预览版) - 为数据集启用 兼容性模式 会在所选位置生成数据的只读版本,该版本必须在刷新表时更新。 兼容性版本包括 Delta Lake 和 Iceberg 格式的 v1 元数据以及数据的只读副本,允许访问更广泛的客户端(包括必须直接读取表数据的客户端,而不是通过 API),但代价是延迟数据更新和数据复制成本。

    有关兼容性模式的详细信息,请参阅 兼容性模式

如果外部客户端支持 REST API,Azure Databricks建议使用外部数据访问来授予这些客户端访问具体化视图或流式处理表的权限。 对于更广泛的客户端,尤其是较旧的客户端和其他 Unity 目录托管表,请使用兼容性模式。

能力 外部数据访问 兼容性模式
数据复制 无需复制数据。 需要复制数据。
一致性 读取后写入一致性。 外部客户端在数据集中发生更改后立即看到更改。 更新按计划进行。 默认情况下,兼容性表每小时更新一次。 这可以设置为在对源表进行更改后立即更新,但数据复制时间仍延迟。
Access 需要“新式”REST API 访问权限。 支持 Delta 4.0.0 或更高版本的目录 API 或 Iceberg v3 规范 API(需要支持删除矢量)。 与所有 Delta Lake 或 Iceberg 客户端兼容。
单个表对象 对于外部客户端而言,物化视图和流式表会显示为与原始数据集同名的托管表。 对于外部客户端而言,兼容性表会显示为位于新位置的新表。
表类型支持 支持由 Lakeflow 管道管理或作为独立对象创建的实体化视图和流表。 支持物化视图和流式表,无论是由 Lakeflow 管道管理还是独立存在,以及任何其他由 Unity Catalog 管理的表。
Cost 维护面向外部的元数据的成本是具体化视图或流式处理表刷新成本的一部分。 这通常低于刷新的成本和时间的 1%。 兼容模式的大部分成本是将旧数据传输到新位置的成本。

其他资源