Delta クライアントから Databricks テーブルを読み取る
このページでは、Unity REST API を使用して、外部の Delta クライアントから Unity Catalog マネージド テーブルと外部テーブルにアクセスする方法の概要について説明します。外部クライアントから外部 Delta テーブルを作成するには、「 外部クライアントからの外部 Delta テーブルの作成」を参照してください。
Iceberg REST カタログを使用して、Apache Spark や DuckDB などのサポートされている Iceberg クライアントから Databricks 上の Unity Catalog に登録されたテーブルを読み取ります。
サポートされている統合の完全な一覧については、「 Unity Catalog の統合」を参照してください。
Unity REST API を使用した読み取りと書き込み
Unity REST API は、Unity Catalog に登録されているテーブルへの外部クライアントの読み取りアクセスを提供します。一部のクライアントは、テーブルの作成と既存のテーブルへの書き込みもサポートしています。
エンドポイント /api/2.1/unity-catalogを使用してアクセスを設定します。
Unity REST API エンドポイントに使用されるワークスペース URL には、ワークスペース ID を含める必要があります。ワークスペース ID がないと、API リクエストは予期される応答ではなく、ログイン ページへの303リダイレクトを返す可能性があります。
ワークスペースの URL とワークスペース ID を確認するには、「ワークスペースのインスタンス名、URL、および ID」を参照してください。
必要条件
Databricks は、Unity Catalog の一部としてテーブルへの Unity REST API アクセスをサポートしています。 これらのエンドポイントを使用するには、ワークスペースで Unity Catalog を有効にする必要があります。 次のテーブルタイプは、Unity REST API の読み取りの対象となります。
- Unity Catalog マネージドテーブル.
- Unity Catalog の外部テーブル。
Unity REST API を使用して Delta クライアントから Databricks オブジェクトを読み取るためのアクセスを設定するには、次の構成手順を完了する必要があります。
- メタストアの 外部データ アクセス を有効にします。 「 メタストアでの外部データ アクセスの有効化」を参照してください。
- 統合を構成するプリンシパルに、オブジェクトを含むスキーマに対する
EXTERNAL USE SCHEMA権限を付与します。「 プリンシパルに Unity Catalog 特権を付与する」を参照してください。 - 次のいずれかの方法で認証します。
- Personal アクセス (PAT): 「 Databricksリソースへのアクセスを承認する」を参照してください。
- OAuth マシン間 (M2M) 認証: 長時間実行される Spark ジョブ (1 時間以上) の自動資格情報とトークンの更新をサポートします。「 OAuthを使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。
PAT 認証を使用して Apache Spark で Delta テーブルを読み取る
PAT 認証を使用して Apache Spark で Unity Catalog 管理テーブルと外部 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.hadoop.fs.gs.impl": "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem",
"spark.hadoop.fs.AbstractFileSystem.gs.impl": "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS",
"spark.jars.packages": "io.delta:delta-spark_2.13:4.0.1,io.unitycatalog:unitycatalog-spark_2.13:0.3.1",
"spark.jars": "/path/to/gcs-connector-3.0.2-shaded.jar"
GCS コネクタ JAR ファイルを別途ダウンロードする必要があります。ダウンロードしたgcs-connector-3.0.2-shaded.jarファイルを指すようにspark.jarsパスを更新します。
次の変数を代入します。
-
<uc-catalog-name>: テーブルを含む Unity Catalog のカタログの名前。 -
<token>: 統合を構成するプリンシパル用の個人アクセスウイルス (PAT)。 -
<workspace-url>: ワークスペース ID を含む Databricksワークスペース URL 。たとえば、cust-success.cloud.databricks.com/?o=6280049833385130。
長時間実行されるジョブの自動資格情報更新を有効にするには、次の構成を追加します。
"spark.sql.catalog.<catalog-name>.renewCredential.enabled": true
上記のパッケージ バージョンは、このページの最終更新時点での最新版です。新しいバージョンが利用できる可能性があります。パッケージのバージョンが Databricks Runtime バージョンおよび Spark バージョンと互換性があることを確認します。
クラウド オブジェクト ストレージ用に Apache Spark を構成する方法の詳細については、 Unity Catalog OSS ドキュメントを参照してください。
OAuth 認証を使用して Apache Spark で Delta テーブルを読み取る
Databricks は、OAuth マシン間 (M2M) 認証もサポートしています。OAuth は、Unity Catalog 認証のトークンの更新を自動的に処理します。クラウド ストレージ認証情報の自動更新も必要な長時間実行ジョブの場合は、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を使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。
OAuth認証を使用してApache SparkでUnity Catalogマネージドテーブルと外部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",
"spark.jars": "/path/to/gcs-connector-3.0.2-shaded.jar"
GCS コネクタ JAR ファイルを別途ダウンロードする必要があります。ダウンロードしたgcs-connector-3.0.2-shaded.jarファイルを指すようにspark.jarsパスを更新します。
次の変数を代入します。
-
<uc-catalog-name>: テーブルを含む Unity Catalog のカタログの名前。 -
<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を使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。 -
<oauth-client-secret>: サービスプリンシパルのOAuthクライアント シークレット。 「 OAuthを使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。 -
<workspace-url>: ワークスペース ID を含む Databricksワークスペース URL 。たとえば、cust-success.cloud.databricks.com/?o=6280049833385130。
上記のパッケージ バージョンは、このページの最終更新時点での最新版です。新しいバージョンが利用できる可能性があります。パッケージのバージョンが Spark バージョンと互換性があることを確認します。