Delta LakeクライアントからDatabricksテーブルを読み込む
このページでは、Unity REST APIを使用して、外部Delta LakeクライアントからUnity Catalog管理対象および外部テーブルにアクセスする方法の概要を説明します。 外部クライアントから外部 Delta Lake テーブルを作成するには、 「外部クライアントから外部 Delta テーブルを作成する」を参照してください。
Iceberg REST カタログを使用して、Apache Spark や DuckDB などのサポートされている Iceberg クライアントから Databricks 上の Unity Catalog に登録されたテーブルを読み取ります。
サポートされている統合の完全な一覧については、「 Unity Catalog の統合」を参照してください。
Unity REST API を使用した読み取りと書き込み
Unity REST API は、Unity Catalog に登録されているテーブルへの外部クライアントの読み取りアクセスを提供します。一部のクライアントは、テーブルの作成と既存のテーブルへの書き込みもサポートしています。
データ破損やデータ損失といった潜在的な問題を回避するため、Databricksは、S3に保存されている同じDelta Lakeテーブルを、異なるライタークライアントから変更しないことを推奨します。
ワークスペース URL を使用してアクセスを構成します。Unity Catalog Spark クライアントは、リクエストを適切な Unity Catalog API エンドポイントに自動的にルーティングします。
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 LakeクライアントからDatabricksオブジェクトを読み取るためのアクセスを設定するには、以下の設定を完了する必要があります。
- メタストアの 外部データ アクセス を有効にします。 「 メタストアでの外部データ アクセスの有効化」を参照してください。
- 統合を構成するプリンシパルに、オブジェクトを含むスキーマに対する
EXTERNAL USE SCHEMA権限を付与します。「 プリンシパルに Unity Catalog 特権を付与する」を参照してください。 - 次のいずれかの方法で認証します。
- OAuth マシン間 (M2M) 認証: 長時間実行される Spark ジョブ (1 時間以上) の自動資格情報とトークンの更新をサポートします。「 OAuthを使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。
- Personal アクセス (PAT): 「 Databricksリソースへのアクセスを承認する」を参照してください。
OAuth認証を使用してApache SparkでDelta Lakeテーブルを読み取る
DatabricksはOAuthによるマシン間(M2M)認証をサポートしています。OAuth Unity Catalog認証の更新を自動的に処理します。 クラウドストレージの認証情報の自動更新も必要な長時間実行ジョブの場合は、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以降
- Delta Lake Spark 4.0.1以降(OAuthサポート付き)
- 適切な権限を持つOAuth M2M サービスプリンシパル。 「 OAuthを使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。
OAuth認証を使用してApache SparkでUnity Catalogマネージドテーブルと外部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.hadoop.fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
"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-aws:3.4.0"
次の変数を代入します。
-
<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 バージョンと互換性があることを確認します。
PAT認証を使用してApache SparkでDelta Lakeテーブルを読み取る
Databricksは、ユーザーアカウント認証にPATではなくOAuthを使用することを推奨しています。OAuthはより強力なセキュリティを提供するためです。OAuthを使用してDatabricksユーザーアカウントで認証する方法については、 「OAuthを使用してDatabricksへのユーザーアクセスを承認する」を参照してください。
構成
Sparkの設定には、以下のパッケージまたはJARファイルを含める必要があります。
- Delta Lake Spark (
io.delta:delta-spark): Apache Spark の Delta Lake サポートを提供します。 - Unity Catalog Sparkコネクタ (
io.unitycatalog:unitycatalog-spark):Apache SparkをUnity Catalogに接続します。 - クラウド ストレージ コネクタ : テーブルをバックアップするクラウド オブジェクト ストレージにアクセスするために必要です。 コネクタはクラウドプロバイダーによって異なります。
- 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 Catalog 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.hadoop.fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
"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-aws:3.4.0"
:::
変数
設定ファイルに以下の変数を代入してください。
-
<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のバージョンと互換性があることを確認してください。