このページでは、Unity REST API を使用して、外部 Delta Lake クライアントから Unity カタログのマネージド テーブルと外部テーブルにアクセスする方法の概要について説明します。 外部クライアントから外部 Delta Lake テーブルを作成するには、「外部クライアント から外部 Delta テーブルを作成する」を参照してください。
Iceberg REST カタログを使用して、Apache Spark や DuckDB など、サポートされている Iceberg クライアントから Azure Databricks 上の Unity カタログ登録済みテーブルを読み取ります。
サポートされている統合の完全な一覧については、 Unity カタログの統合を参照してください。
ヒント
Microsoft Fabric を使用して Azure Databricks データを読み取る方法については、「Microsoft Fabric を使用して Unity カタログに登録されているデータを読み取る」を参照してください。
Unity REST API を使用した読み取りと書き込み
Unity REST API は、Unity カタログに登録されているテーブルへの読み取りアクセスを外部クライアントに提供します。 一部のクライアントでは、テーブルの作成と既存のテーブルへの書き込みもサポートされています。
ワークスペース URL を使用してアクセスを構成します。 Unity Catalog Spark クライアントは、要求を適切な Unity カタログ API エンドポイントに自動的にルーティングします。
Important
Unity REST API エンドポイントに使用されるワークスペース URL には、ワークスペース ID が含まれている必要があります。 ワークスペース ID がない場合、API 要求は、予想される応答ではなくログイン ページにリダイレクト 303 を返す場合があります。
ワークスペースの URL とワークスペース ID を確認するには、「 ワークスペース インスタンスの名前、URL、ID」を参照してください。
要件
Azure Databricks では、Unity カタログの一部として、テーブルへの Unity REST API アクセスがサポートされています。 これらのエンドポイントを使用するには、ワークスペースで Unity カタログを有効にする必要があります。 Unity REST API の読み取りの対象となるテーブルの種類を次に示します。
- Unity カタログのマネージド テーブル。
- Unity カタログの外部テーブル。
Unity REST API を使用して Delta Lake クライアントから Azure Databricks オブジェクトを読み取るアクセスを構成するには、次の構成手順を完了する必要があります。
- メタストアで外部データ アクセスを有効にします。 「メタストアで外部データ アクセスを有効にする」を参照してください。
- 統合を構成するプリンシパルに、オブジェクトを含むスキーマに対する
EXTERNAL USE SCHEMA特権を付与します。 Unity カタログのプリンシパル権限の付与について参照してください。 - 次のいずれかの方法を使用して認証します。
- OAuth マシン間 (M2M) 認証: 実行時間の長い Spark ジョブ (>1 時間) の自動資格情報とトークン更新をサポートします。 OAuth を使用した Azure Databricks へのサービス プリンシパル アクセスの承認に関するページを参照してください。
- 個人用アクセス トークン (PAT): Azure Databricks リソースへのアクセスの承認に関するページを参照してください。
OAuth 認証を使用して Apache Spark で Delta Lake テーブルを読み取る
Azure Databricks では、OAuth マシン間 (M2M) 認証がサポートされています。 OAuth は、Unity カタログ認証のトークンの更新を自動的に処理します。 クラウド ストレージ資格情報の自動更新も必要な実行時間の長いジョブの場合は、Spark 構成で spark.sql.catalog.<uc-catalog-name>.renewCredential.enabled 設定を有効にします。
外部 Apache Spark クライアントの OAuth 認証には、次のものが必要です。
- Unity Catalog Spark クライアント バージョン 0.3.1 以降 (
io.unitycatalog:unitycatalog-spark) - Apache Spark 4.0 以降
- OAuth がサポートされている Delta Lake Spark 4.0.1 以降
- 適切なアクセス許可を持つ OAuth M2M サービス プリンシパル。 OAuth を使用した Azure Databricks へのサービス プリンシパル アクセスの承認に関するページを参照してください。
OAuth 認証を使用して Apache Spark で Unity カタログのマネージド テーブルと外部 Delta Lake テーブルを読み取るために、次の構成が必要です。
"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>",
"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 カタログ内のカタログの名前。 -
<oauth-token-endpoint>: OAuth トークン エンドポイントの URL。 この URL を構築するには:- Azure 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 へのサービス プリンシパル アクセスの承認に関するページを参照してください。
-
<workspace-url>: ワークスペース ID を含む Azure Databricks ワークスペース の URL。 たとえば、「adb-1234567890123456.12.azuredatabricks.net」のように入力します。
注
上記のパッケージ バージョンは、このページの最後の更新時点の最新バージョンです。 新しいバージョンを使用できる場合があります。 パッケージのバージョンが Spark バージョンと互換性があることを確認します。
PAT 認証を使用して Apache Spark で Delta Lake テーブルを読み取る
Important
Databricks では、ユーザー アカウント認証に AT の代わりに OAuth を使用することをお勧めします。OAuth の方がセキュリティが強化されるためです。 OAuth を使用して Databricks ユーザー アカウントで認証する方法については、「OAuth を使用して Azure Databricks へのユーザー アクセスを承認する」を参照してください。
コンフィギュレーション
Spark 構成には、次のパッケージまたは JAR が含まれている必要があります。
-
Delta Lake Spark (
io.delta:delta-spark): Apache Spark の Delta Lake サポートを提供します。 -
Unity Catalog Spark コネクタ (
io.unitycatalog:unitycatalog-spark): Apache Spark を Unity カタログに接続します。 -
クラウド ストレージ コネクタ: テーブルをバックアップするクラウド オブジェクト ストレージにアクセスするために必要です。 コネクタは、クラウド プロバイダーによって異なります。
-
AWS:
org.apache.hadoop:hadoop-aws— S3 ファイルシステムのサポートを提供します。 -
Azure:
org.apache.hadoop:hadoop-azure— Azure Data Lake Storage Gen2 のサポートを提供します。 -
GCP:
gcs-connectorJAR — Google Cloud Storage のサポートを提供します。 JAR を 個別に ダウンロードし、spark.jarsを使用して参照します。
-
AWS:
その他のクラウド固有の構成については、 Unity カタログ OSS のドキュメントを参照してください。
"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>",
"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 カタログ カタログの名前。 -
<token>: 統合を構成するプリンシパルの個人用アクセス トークン (PAT)。
-
<workspace-url>: ワークスペース ID を含む Azure Databricks ワークスペース の URL。 たとえば、「adb-1234567890123456.12.azuredatabricks.net」のように入力します。
資格情報の更新
実行時間の長いジョブの資格情報の自動更新を有効にするには、次の構成を追加します。
"spark.sql.catalog.<catalog-name>.renewCredential.enabled": true
注
上記のパッケージ バージョンは、このページの最後の更新時点の最新バージョンです。 新しいバージョンを使用できる場合があります。 パッケージのバージョンが Databricks Runtime および Spark のバージョンと互換性があることを確認します。