メインコンテンツまでスキップ

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 に登録されているテーブルへの外部クライアントの読み取りアクセスを提供します。一部のクライアントは、テーブルの作成と既存のテーブルへの書き込みもサポートしています。

警告

データ破損やデータ損失の問題を回避するために、Databricks では、S3 に格納されている同じ Delta テーブルを異なるライター クライアントから変更しないことをお勧めします。

エンドポイント /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 オブジェクトを読み取るためのアクセスを設定するには、次の構成手順を完了する必要があります。

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.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 バージョンと互換性があることを確認します。

クラウド オブジェクト ストレージ用に 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 認証には次のものが必要です。

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.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"

次の変数を代入します。

注記

上記のパッケージ バージョンは、このページの最終更新時点での最新版です。新しいバージョンが利用できる可能性があります。パッケージのバージョンが Spark バージョンと互換性があることを確認します。