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

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. ダウンロードしたファイルで、clientIdclientSecret、および 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>