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
-
Databricks プロバイダーから共有された OIDC プロファイルポータルの URL にアクセスしてください。
まだお受け取りになっていない場合は、URLをご請求ください。
-
ポータルページで、アクセスする共有をドロップダウンメニューから選択します。
-
Download file をクリックします。
-
ダウンロードしたファイルで、
clientId、clientSecret、およびscopeを該当する値に置き換えてください。 -
選択した共有名を、構成のwarehouseとして使用します。
-
共有プロファイルファイルをクライアントコードでインポートしてください。
共有データにアクセスする
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スコープ。
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 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 スクリプトへのパスです。
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>