次の方法で共有


Delta Lake クライアントから Azure Databricks テーブルを読み取る

このページでは、Unity REST API を使用して、外部 Delta Lake クライアントから Unity カタログのマネージド テーブルと外部テーブルにアクセスする方法の概要について説明します。 外部クライアントから外部 Delta Lake テーブルを作成するには、「外部クライアント から外部 Delta テーブルを作成する」を参照してください。

Iceberg REST カタログを使用して、Apache Spark や DuckDB など、サポートされている Iceberg クライアントから Azure Databricks 上の Unity カタログ登録済みテーブルを読み取ります。

サポートされている統合の完全な一覧については、 Unity カタログの統合を参照してください。

ヒント

Microsoft Fabric を使用して Azure Databricks データを読み取る方法については、「Microsoft Fabric を使用して Unity カタログに登録されているデータを読み取る」を参照してください。

Unity REST API を使用した読み取りと書き込み

Unity REST API は、Unity カタログに登録されているテーブルへの読み取りアクセスを外部クライアントに提供します。 一部のクライアントでは、テーブルの作成と既存のテーブルへの書き込みもサポートされています。

ワークスペース URL を使用してアクセスを構成します。 Unity Catalog Spark クライアントは、要求を適切な Unity カタログ API エンドポイントに自動的にルーティングします。

Important

Unity REST API エンドポイントに使用されるワークスペース URL には、ワークスペース ID が含まれている必要があります。 ワークスペース ID がない場合、API 要求は、予想される応答ではなくログイン ページにリダイレクト 303 を返す場合があります。

ワークスペースの URL とワークスペース ID を確認するには、「 ワークスペース インスタンスの名前、URL、ID」を参照してください。

要件

Azure Databricks では、Unity カタログの一部として、テーブルへの Unity REST API アクセスがサポートされています。 これらのエンドポイントを使用するには、ワークスペースで Unity カタログを有効にする必要があります。 Unity REST API の読み取りの対象となるテーブルの種類を次に示します。

  • Unity カタログのマネージド テーブル。
  • Unity カタログの外部テーブル。

Unity REST API を使用して Delta Lake クライアントから Azure Databricks オブジェクトを読み取るアクセスを構成するには、次の構成手順を完了する必要があります。

OAuth 認証を使用して Apache Spark で Delta Lake テーブルを読み取る

Azure Databricks では、OAuth マシン間 (M2M) 認証がサポートされています。 OAuth は、Unity カタログ認証のトークンの更新を自動的に処理します。 クラウド ストレージ資格情報の自動更新も必要な実行時間の長いジョブの場合は、Spark 構成で spark.sql.catalog.<uc-catalog-name>.renewCredential.enabled 設定を有効にします。

外部 Apache Spark クライアントの OAuth 認証には、次のものが必要です。

OAuth 認証を使用して Apache Spark で Unity カタログのマネージド テーブルと外部 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.jars.packages": "io.delta:delta-spark_2.13:4.0.1,io.unitycatalog:unitycatalog-spark_2.13:0.3.1,org.apache.hadoop:hadoop-azure:3.3.6"

次の変数に置き換える:

  • <workspace-url>: ワークスペース ID を含む Azure Databricks ワークスペース の URL。 たとえば、「 adb-1234567890123456.12.azuredatabricks.net 」のように入力します。

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

PAT 認証を使用して Apache Spark で Delta Lake テーブルを読み取る

Important

Databricks では、ユーザー アカウント認証に AT の代わりに OAuth を使用することをお勧めします。OAuth の方がセキュリティが強化されるためです。 OAuth を使用して Databricks ユーザー アカウントで認証する方法については、「OAuth を使用して Azure Databricks へのユーザー アクセスを承認する」を参照してください。

コンフィギュレーション

Spark 構成には、次のパッケージまたは JAR が含まれている必要があります。

  • Delta Lake Spark (io.delta:delta-spark): Apache Spark の Delta Lake サポートを提供します。
  • Unity Catalog Spark コネクタ (io.unitycatalog:unitycatalog-spark): Apache Spark を Unity カタログに接続します。
  • クラウド ストレージ コネクタ: テーブルをバックアップするクラウド オブジェクト ストレージにアクセスするために必要です。 コネクタは、クラウド プロバイダーによって異なります。
    • AWS: org.apache.hadoop:hadoop-aws — S3 ファイルシステムのサポートを提供します。
    • Azure: org.apache.hadoop:hadoop-azure — Azure Data Lake Storage Gen2 のサポートを提供します。
    • GCP: gcs-connector JAR — Google Cloud Storage のサポートを提供します。 JAR を 個別に ダウンロードし、 spark.jarsを使用して参照します。

その他のクラウド固有の構成については、 Unity カタログ 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.jars.packages": "io.delta:delta-spark_2.13:4.0.1,io.unitycatalog:unitycatalog-spark_2.13:0.3.1,org.apache.hadoop:hadoop-azure:3.3.6"

:::

変数

構成では、次の変数に置き換える必要があります。

  • <uc-catalog-name>: テーブルを含む Unity カタログ カタログの名前。
  • <token>: 統合を構成するプリンシパルの個人用アクセス トークン (PAT)。
  • <workspace-url>: ワークスペース ID を含む Azure Databricks ワークスペース の URL。 たとえば、「 adb-1234567890123456.12.azuredatabricks.net 」のように入力します。

資格情報の更新

実行時間の長いジョブの資格情報の自動更新を有効にするには、次の構成を追加します。

"spark.sql.catalog.<catalog-name>.renewCredential.enabled": true

上記のパッケージ バージョンは、このページの最後の更新時点の最新バージョンです。 新しいバージョンを使用できる場合があります。 パッケージのバージョンが Databricks Runtime および Spark のバージョンと互換性があることを確認します。