このページでは、Unity REST API を使用して、外部 Delta クライアントから Unity カタログのマネージド テーブルと外部テーブルにアクセスする方法の概要について説明します。 外部クライアントから外部差分テーブルを作成するには、「外部クライアント から外部デルタ テーブルを作成する」を参照してください。
Iceberg REST カタログを使用して、Apache Spark や DuckDB など、サポートされている Iceberg クライアントから Azure Databricks 上の Unity カタログ登録済みテーブルを読み取ります。
サポートされている統合の完全な一覧については、 Unity カタログの統合を参照してください。
ヒント
Microsoft Fabric を使用して Azure Databricks データを読み取る方法については、「Microsoft Fabric を使用して Unity カタログに登録されているデータを読み取る」を参照してください。
Unity REST API を使用した読み取りと書き込み
Unity REST API は、Unity カタログに登録されているテーブルへの読み取りアクセスを外部クライアントに提供します。 一部のクライアントでは、テーブルの作成と既存のテーブルへの書き込みもサポートされています。
エンドポイント /api/2.1/unity-catalog を使用してアクセスを構成します。
要件
Azure Databricks では、Unity カタログの一部として、テーブルへの Unity REST API アクセスがサポートされています。 これらのエンドポイントを使用するには、ワークスペースで Unity カタログを有効にする必要があります。 Unity REST API の読み取りの対象となるテーブルの種類を次に示します。
- Unity カタログのマネージド テーブル。
- Unity カタログの外部テーブル。
Unity REST API を使用して Delta クライアントから Databricks オブジェクトを読み取るアクセスを構成するには、次の構成手順を完了する必要があります。
- メタストアで外部データ アクセスを有効にします。 「メタストアで外部データ アクセスを有効にする」を参照してください。
- 統合を構成するプリンシパルに、オブジェクトを含むスキーマに対する
EXTERNAL USE SCHEMA特権を付与します。 Unity カタログのプリンシパル権限の付与について参照してください。 - 次のいずれかの方法を使用して認証します。
- 個人用アクセス トークン (PAT): Azure Databricks リソースへのアクセスの承認に関するページを参照してください。
- OAuth マシン間 (M2M) 認証: 実行時間の長い Spark ジョブ (>1 時間) の自動資格情報とトークン更新をサポートします。 OAuth を使用した Azure Databricks へのサービス プリンシパル アクセスの承認に関するページを参照してください。
PAT 認証を使用して Apache Spark で差分テーブルを読み取る
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 カタログ内のカタログの名前。 -
<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 でデルタ テーブルを読み取る
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"
次の変数に置き換える:
-
<uc-catalog-name>: テーブルを含む Unity カタログ内のカタログの名前。 -
<workspace-url>: Azure Databricks ワークスペースの URL。 ワークスペース インスタンス名、URL、ID を参照してください。 -
<oauth-token-endpoint>: OAuth トークン エンドポイントの URL。 この URL を構築するには:- Databricks アカウント ID を見つけます。 「アカウント ID を特定する」を参照してください。
- 次の形式を使用します。
https://accounts.cloud.databricks.com/oidc/accounts/<account-id>/v1/token
-
<oauth-client-id>: サービス プリンシパルの OAuth クライアント ID。 OAuth を使用した Azure Databricks へのサービス プリンシパル アクセスの承認に関するページを参照してください。 -
<oauth-client-secret>: サービス プリンシパルの OAuth クライアント シークレット。 OAuth を使用した Azure Databricks へのサービス プリンシパル アクセスの承認に関するページを参照してください。
注
上記のパッケージ バージョンは、このページの最後の更新時点の最新バージョンです。 新しいバージョンを使用できる場合があります。 パッケージのバージョンが Spark バージョンと互換性があることを確認します。