Open ID Connect(OIDC)フェデレーションデータ受信者は、OSS SparkやSnowflakeなどのIceberg REST Catalog(IRC)クライアントを使って、Azure Databricksで作成されたOpenSharing共有にアクセスできます。
代わりにベアラー トークンを使用して認証を管理する場合は、「 ベアラー トークンを使用して Databricks 以外のユーザーの受信者オブジェクトを作成する (Databricks から開く共有)」を参照してください。
このページは受信者を対象としています。 プロバイダーがAzure Databricksで受信者の OIDC フェデレーションを有効にする方法については、「OpenSharing 受信者の Open ID Connect (OIDC) フェデレーションを有効にする」を参照してください。
OAuthコネクタ用のIcebergプロファイルをダウンロードしてください
Azure Databricks プロバイダーが共有した OIDC プロファイル ポータルの URL に移動します。
まだ受信していない場合は、URL を要求します。
ポータルページで、ドロップダウンメニューからアクセスしたい共有を選択します。
「ダウンロードファイル」をクリックします。
ダウンロードしたファイルで、
clientId、clientSecret、scopeを実際の値に置き換えます。選択したシェア名を設定内の倉庫として使ってください。
クライアント コードを使用して共有プロファイル ファイルをインポートします。
共有データにアクセスする
Iceberg REST カタログを使ってデータにアクセスできます。
Snowflake
Snowflake ワークシートで、次のコマンドを実行してカタログ統合を作成します。 プロバイダーが共有している OIDC プロファイル ポータルから SQL コマンドをコピーすることもできます。 アクセスしたい共有内容を必ず選択してください。
プレースホルダーの値を実行する前に置き換えます。
-
<catalog-integration-name>: カタログ統合の名前。 -
<catalog-uri>:アイスバーグREST カタログエンドポイント。 OIDCのプロフィールポータルかダウンロードしたプロフィールファイルで見つけてください。 -
<share-name>: OIDCプロフィールポータルで選択したシェアの名前です。 -
<oauth-token-uri>: IdP の OAuth トークン エンドポイント。 -
<oauth-client-id>と<oauth-client-secret>: OAuth 資格情報。 -
<oauth-scope>: OAuth スコープ。
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>をデータベースの名前に置き換えます。
CREATE DATABASE <database-name>
LINKED_CATALOG = (
CATALOG = <catalog-integration-name>
);
OSSスパーク
次の例では、OSS Spark を使用して Iceberg REST カタログから共有データを読み取ります。 Iceberg Spark ランタイムと AWS バンドル JAR を含む Spark インストールから実行します。
プレースホルダーの値を実行する前に置き換えます。
-
<spark-home>: Spark インストールへのパス。 -
<iceberg-jars-path>: Iceberg JAR ファイルへのパス。 -
<catalog-uri>:アイスバーグREST カタログエンドポイント。 OIDCのプロフィールポータルかダウンロードしたプロフィールファイルで見つけてください。 -
<share-name>: OIDCプロフィールポータルで選択したシェアの名前です。 -
<oauth-token-uri>: IdP の OAuth トークン エンドポイント。 -
<oauth-client-id>と<oauth-client-secret>: OAuth 資格情報。 -
<oauth-scope>: OAuth スコープ。 -
<spark-script>: 実行する Scala スクリプトへのパス。
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>