通过


从 Delta 客户端读取 Databricks 表

本页概述了如何使用 Unity REST API 从外部 Delta 客户端访问 Unity 目录托管表和外部表。 若要从外部客户端创建外部 Delta 表,请参阅 从外部客户端创建外部 Delta 表

使用 Iceberg REST 目录 从支持的 Iceberg 客户端(包括 Apache Spark 和 DuckDB)读取 Azure Databricks 上已注册的 Unity Catalog 表。

有关受支持的集成的完整列表,请参阅 Unity 目录集成

小贴士

有关如何使用 Microsoft Fabric 读取 Azure Databricks 数据的信息,请参阅 使用 Microsoft Fabric 读取在 Unity 目录中注册的数据。

使用 Unity REST API 读取和写入

Unity REST API 提供对注册到 Unity 目录的表的外部客户端读取访问权限。 某些客户端还支持创建表及写入到现有表。

使用终结点 /api/2.1/unity-catalog 配置访问权限。

要求

Azure Databricks 支持通过 Unity REST API 访问 Unity Catalog 中的表。 必须在工作区启用 Unity Catalog 才能使用这些终结点。 以下表类型符合 Unity REST API 读取的条件:

  • Unity Catalog 托管表。
  • Unity Catalog 外部表。

必须完成以下配置步骤,才能使用 Unity REST API 配置从 Delta 客户端读取 Databricks 对象的访问权限:

使用 PAT 身份验证读取 Apache Spark Delta 表

若要使用 PAT 身份验证通过 Apache Spark 读取 Unity 目录托管表和外部 Delta 表,需要以下配置:

"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog",
"spark.sql.catalog.<uc-catalog-name>.token": "<token>",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
"spark.jars.packages": "io.delta:delta-spark_2.13:4.0.1,io.unitycatalog:unitycatalog-spark_2.13:0.3.1,org.apache.hadoop:hadoop-azure:3.3.6"

请替换以下变量:

  • <uc-catalog-name>:Unity Catalog 中包含你的表的目录名称。
  • <workspace-url>:Azure Databricks 工作区的 URL。
  • <token>:用于配置集成的主体的个人访问令牌(PAT)。

若要为长时间运行的作业启用自动凭据续订,请添加以下配置:

"spark.sql.catalog.<catalog-name>.renewCredential.enabled": true

注释

在上次更新此页面时,上面显示的包版本是最新的。 较新版本可能可用。 验证包版本是否与 Databricks Runtime 版本和 Spark 版本兼容。

有关为云对象存储配置 Apache Spark 的其他详细信息,请参阅 Unity 目录 OSS 文档

使用 OAuth 身份验证通过 Apache Spark 读取 Delta 表

Azure Databricks 还支持 OAuth 计算机到计算机 (M2M) 身份验证。 OAuth 自动处理 Unity 目录身份验证的令牌续订。 对于需要自动云存储凭据续订的长时间运行的作业,请在 Spark 配置中启用 spark.sql.catalog.<uc-catalog-name>.renewCredential.enabled 设置。

外部 Spark 客户端的 OAuth 身份验证需要:

  • Unity Catalog Spark 客户端版本 0.3.1 或更高(io.unitycatalog:unitycatalog-spark
  • Apache Spark 4.0 或更高版本
  • 支持 OAuth 的 Delta Spark 4.0.1 或更高版本
  • 具有适当权限的 OAuth M2M 服务主体。 请参阅 使用 OAuth 授权服务主体访问 Azure Databricks

若要使用 OAuth 身份验证通过 Apache Spark 读取 Unity 目录托管表和外部 Delta 表,需要以下配置:

"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog",
"spark.sql.catalog.<uc-catalog-name>.auth.type": "oauth",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.uri": "<oauth-token-endpoint>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientId": "<oauth-client-id>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientSecret": "<oauth-client-secret>",
"spark.sql.catalog.<uc-catalog-name>.renewCredential.enabled": "true",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
"spark.jars.packages": "io.delta:delta-spark_2.13:4.0.1,io.unitycatalog:unitycatalog-spark_2.13:0.3.1,org.apache.hadoop:hadoop-azure:3.3.6"

请替换以下变量:

注释

在上次更新此页面时,上面显示的包版本是最新的。 较新版本可能可用。 验证包版本是否与 Spark 版本兼容。