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を使用してアクセスを設定します。
必要条件
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 のカタログの名前。<workspace-url>: Databricks ワークスペースの URL。<token>: 統合を構成するプリンシパル用の個人アクセスウイルス (PAT)。
長時間実行されるジョブの自動資格情報更新を有効にするには、次の構成を追加します。
"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 のカタログの名前。 -
<workspace-url>: 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を使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。 -
<oauth-client-secret>: サービスプリンシパルのOAuthクライアント シークレット。 「 OAuthを使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。
上記のパッケージ バージョンは、このページの最終更新時点での最新版です。新しいバージョンが利用できる可能性があります。パッケージのバージョンが Spark バージョンと互換性があることを確認します。