默认情况下,外部系统无法访问物化视图和流表。 Azure Databricks提供了两项功能,使数据集可供 Delta Lake 或 Iceberg 客户端使用:
外部数据访问 (公共预览版) - 为管道数据集启用 外部数据访问 会为数据集创建元数据的副本,该副本允许客户端使用 Unity 目录或 Iceberg REST API,而无需完整数据复制或单独的刷新计划。 客户端必须使用目录 REST API,并且必须支持 Delta 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%。 | 兼容模式的大部分成本是将旧数据传输到新位置的成本。 |
其他资源
- 若要了解如何从外部系统访问 Databricks 数据,请参阅 使用外部系统访问 Databricks 数据。
- 启用从外部访问流式表和物化视图中的数据
- 兼容性模式