Delta クライアントから Databricks テーブルを読み取る
Iceberg REST カタログを使用して、Apache Spark や DuckDB などのサポートされている Iceberg クライアントから Databricks 上の Unity Catalog に登録されたテーブルを読み取ります。
Unity REST API を使用して読み取る
Unity REST API は、Unity Catalog に登録されている Delta テーブルへの読み取りアクセスを外部クライアントに提供します。 一部のクライアントは、テーブルの作成と既存のテーブルへの書き込みもサポートしています。
データ破損やデータ損失の問題を回避するために、Databricks では、S3 に格納されている同じ Delta テーブルを異なるライター クライアントから変更しないことをお勧めします。
エンドポイント /api/2.1/unity-catalog
を使用してアクセスを設定します。
必要条件
Databricks は、Unity Catalog の一部としてテーブルへの Unity REST API アクセスをサポートしています。 これらのエンドポイントを使用するには、ワークスペースで Unity Catalog を有効にする必要があります。 次のテーブルタイプは、Unity REST API の読み取りの対象となります。
- Unity Catalog マネージドテーブル.
- Delta Lake に格納された Unity Catalog 外部テーブル。
Unity REST API を使用して Delta クライアントから Databricks テーブルを読み取るためのアクセスを設定するには、次の構成手順を完了する必要があります。
- メタストアの 外部データ アクセス を有効にします。 「 メタストアでの外部データ アクセスの有効化」を参照してください。
- 統合を構成するプリンシパルに、テーブルを含むスキーマに対する
EXTERNAL USE SCHEMA
権限を付与します。 プリンシパルEXTERNAL USE SCHEMA
の付与を参照してください。 - Databricks 個人用アクセス トークンを使用して認証します。 「Databricks リソースへのアクセスの承認」を参照してください。
Apache Spark を使用した Delta テーブルの読み取り
次に示すのは、Unity Catalog のマネージド テーブルと外部の Delta テーブルを読み取るように Apache Spark を構成するための設定の例です。
"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>"
次の変数を代入します。
<uc-catalog-name>
: テーブルを含む Unity Catalog のカタログの名前。<workspace-url>
: Databricks ワークスペースの URL。<token>
: 統合を構成するプリンシパルの PAT トークン。
特定の設定は、カタログをバックアップするクラウドオブジェクトストレージのタイプによって異なります。 追加の構成については、 OSS Unity Catalog のドキュメント を参照してください。