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

Open ID Connect (OIDC) フェデレーションを使用して Iceberg クライアントから OpenSharing 共有を読み取る

Open ID Connect (OIDC) フェデレーションのデータ受信者は、OSS Spark や Snowflake などの Iceberg REST Catalog (IRC) クライアントを使用して、Databricks で作成された OpenSharing 共有にアクセスできます。

代わりにベアラー トークンを使用して認証を管理している場合は、ベアラー トークンを使用して非Databricksユーザーの受信者オブジェクトを作成する (Databricks からオープン共有)を参照してください。

このページは受信者向けです。プロバイダーがDatabricksで受信者に対してOIDCフェデレーションを有効にする方法については、Open ID Connect (OIDC) フェデレーションをOpenSharing受信者向けに有効にするを参照してください。

OAuthコネクタ用のIcebergプロファイルをdownload​

  1. Databricks プロバイダーから共有された OIDC プロファイルポータルの URL にアクセスしてください。

    まだお受け取りになっていない場合は、URLをご請求ください。

  2. ポータルページで、アクセスする共有をドロップダウンメニューから選択します。

  3. Download file をクリックします。

  4. ダウンロードしたファイルで、clientId、clientSecret、および scope を該当する値に置き換えてください。

  5. 選択した共有名を、構成のwarehouseとして使用します。

  6. 共有プロファイルファイルをクライアントコードでインポートしてください。

共有データにアクセスする​

Iceberg REST カタログを使ってデータにアクセスできます。

Snowflake​

Snowflakeのワークシートで、以下のコマンドを実行してカタログ統合を作成してください。また、プロバイダーが共有していたOIDCプロファイルポータルからSQLコマンドをコピーすることもできます。アクセスしたい共有フォルダを必ず選択してください。

実行する前に、プレースホルダーの値を置き換えます。

  • <catalog-integration-name>:カタログ統合の名前です。
  • <catalog-uri>:Iceberg REST Catalog Endpoint。OIDC プロファイルポータルまたはdownloadしたプロファイルファイルで確認してください。
  • <share-name>:OIDC プロファイルポータルで選択した共有の名前。
  • <oauth-token-uri>:IdPのOAuthトークンエンドポイント
  • <oauth-client-id> <oauth-client-secret>と、あなたのOAuth認証情報。
  • <oauth-scope>:OAuthスコープ。
SQL
USE ROLE ACCOUNTADMIN;

CREATE OR REPLACE CATALOG INTEGRATION <catalog-integration-name>
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
REST_CONFIG = (
CATALOG_URI = '<catalog-uri>'
WAREHOUSE = '<share-name>'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_TOKEN_URI = '<oauth-token-uri>'
OAUTH_CLIENT_ID = '<oauth-client-id>'
OAUTH_CLIENT_SECRET = '<oauth-client-secret>'
OAUTH_ALLOWED_SCOPES = ('<oauth-scope>')
)
REFRESH_INTERVAL_SECONDS = 30 -- Optional
ENABLED = TRUE;

カタログ統合を使用する連携データベースを作成します。<database-name>をデータベースの名前に置き換えます。

SQL
CREATE DATABASE <database-name>
LINKED_CATALOG = (
CATALOG = <catalog-integration-name>
);

OSS Spark​

以下の例では、OSS Spark を使用して Iceberg REST Catalog から共有データを読み込みます。Iceberg Spark ランタイムおよび AWS バンドル JAR を含む Spark インストールから実行してください。

実行する前に、プレースホルダーの値を置き換えます。

  • <spark-home>:Spark のインストール パスです。
  • <iceberg-jars-path>Iceberg JAR ファイルへのパスです。
  • <catalog-uri>:Iceberg REST Catalog Endpoint。OIDC プロファイルポータルまたはdownloadしたプロファイルファイルで確認してください。
  • <share-name>:OIDC プロファイルポータルで選択した共有の名前。
  • <oauth-token-uri>:IdPのOAuthトークンエンドポイント
  • <oauth-client-id> <oauth-client-secret>と、あなたのOAuth認証情報。
  • <oauth-scope>:OAuthスコープ。
  • <spark-script>: 実行する Scala スクリプトへのパスです。
Bash
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH <spark-home>/bin/spark-shell \
--jars <iceberg-jars-path>/iceberg-spark-runtime-4.0_2.13-1.10.2.jar,<iceberg-jars-path>/iceberg-aws-bundle-1.10.2.jar \
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
--conf spark.sql.catalog.databricks=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.databricks.type=rest \
--conf spark.sql.catalog.databricks.uri=<catalog-uri> \
--conf spark.sql.catalog.databricks.warehouse=<share-name> \
--conf spark.sql.catalog.databricks.rest.auth.type=oauth2 \
--conf spark.sql.catalog.databricks.oauth2-server-uri=<oauth-token-uri> \
--conf spark.sql.catalog.databricks.credential=<oauth-client-id>:<oauth-client-secret> \
--conf spark.sql.catalog.databricks.scope=<oauth-scope> \
--conf spark.sql.catalog.databricks.io-impl=org.apache.iceberg.aws.s3.S3FileIO \
< <spark-script>