Important
通过 Iceberg REST 目录对视图的外部访问处于 测试阶段。 通过Unity REST API访问视图是普遍可用的。
外部引擎可以通过以下 API 查询 Unity 目录视图:
- 用于 Delta Lake 表上视图的 Unity REST API。
- 用于 Iceberg 兼容表上视图的 Iceberg REST 目录。
外部引擎运行视图的 SQL 并读取底层表。 读者必须能够访问视图以及所有引用的视图或表格。
Requirements
- 启用元存储库的 外部数据访问 。 请参阅启用对 Unity Catalog 数据的外部访问。
- 在父目录和模式上授予
USE CATALOG和USE SCHEMA,在该视图及其引用的每个视图或表上授予SELECT,并在包含这些表的模式上授予EXTERNAL USE SCHEMA。 - 使用Azure Databricks个人访问令牌或OAuth令牌进行身份验证。
- 使用与外部引擎兼容的视图SQL。
Apache Spark 查询视图
Spark示例的最小版本:
- Apache Spark 4.0。
- 对于 Delta 视图:Unity Catalog Spark 连接器 0.6.0 和 Delta Lake 4.3.0。
- 对于 Iceberg 视图:Apache Iceberg 1.10.0。
使用Unity Catalog目录名称作为Spark目录名称,包括视图引用的目录名称。
Delta 表上的视图
使用从 Delta 客户端访问 Databricks 表配置 Spark,并使用上述列出的 Spark、Unity Catalog 连接器和 Delta Lake 版本。
要查询该视图,将 <schema>、<view> 和 <catalog> 替换为你的目录、模式和视图名称,然后在 Spark 中运行以下 SQL:
SELECT * FROM <catalog>.<schema>.<view>;
Iceberg 表上的视图
使用上文列出的 Spark 和 Iceberg 版本,参考从 Apache Iceberg 客户端访问 Azure Databricks 表配置 Spark。
要查询视图,将 <schema>、<view> 和 <catalog> 替换为你的目录、架构和视图名称,然后在 Spark 中运行以下 SQL:
SELECT * FROM <catalog>.<schema>.<view>;
限制
- 不支持从外部计算创建和修改视图。
- 外部引擎必须支持Spark SQL方言的视图定义。 引用视图的查询使用外部引擎的SQL方言。
关于 Iceberg REST 目录访问:
- 不支持带有细粒度访问控制策略、自定义解析路径或用户定义函数的视图。
- 历史视图版本不被支持。
- Spark 使用读取器的 SQL 设置。 结果或错误可能与Databricks运行时不同。