对视图的外部访问

Important

通过 Iceberg REST 目录对视图的外部访问处于 测试阶段。 通过Unity REST API访问视图是普遍可用的。

外部引擎可以通过以下 API 查询 Unity 目录视图:

外部引擎运行视图的 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运行时不同。