キーペア認証によるSnowflake Open Catalogへの接続¶
このトピックでは、クライアントアプリケーションを使用してキーペア認証によってSnowflake Open Catalogに接続する方法について説明します。
このトピックのコード例は、Apache Spark™ を使用して接続する方法を示しています。コード例は PySpark にあります。
前提条件¶
キーペア認証でOpen Catalogに接続する前に、Open Catalogでキーペア認証を構成する必要があります。手順については、Snowflake Open Catalogでキーペア認証を構成するをご参照ください。
Open Catalogに接続する¶
以下のコード例は、Sparkを使用してOpen Catalogに接続するためのものです。
パラメーター¶
パラメーター |
説明 |
|---|---|
|
接続先のカタログ名を指定します。 |
|
外部クラウドストレージプロバイダーのMaven座標を指定します。
|
|
使用するクライアントアプリケーションのアクセストークンを指定します。 |
|
オープンカタログアカウントのアカウント識別子を指定します。 |
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('iceberg_lab') \
.config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,<maven_coordinate>') \
.config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
.config('spark.sql.defaultCatalog', 'opencatalog') \
.config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \
.config('spark.sql.catalog.opencatalog.type', 'rest') \
.config('spark.sql.catalog.opencatalog.uri','https://<open_catalog_account_identifier>.snowflakecomputing.com/polaris/api/catalog') \
.config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \
.config('spark.sql.catalog.opencatalog.token','<access_token>') \
.config('spark.sql.catalog.opencatalog.warehouse','<catalog_name>') \
.getOrCreate()
クロスリージョン接続で接続する(Amazon S3のみ)¶
以下のコード例は、次のような場合にOpen Catalogに接続するためのものです。
オープンカタログアカウントがAmazon S3でホストされている。
外部ストレージのプロバイダーがAmazon S3である。
オープンカタログアカウントがApache Iceberg™テーブルを含むストレージバケットがあるS3リージョンとは異なるS3リージョンでホストされている。
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('iceberg_lab') \
.config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,software.amazon.awssdk:bundle:2.20.160') \
.config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
.config('spark.sql.defaultCatalog', 'opencatalog') \
.config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \
.config('spark.sql.catalog.opencatalog.type', 'rest') \
.config('spark.sql.catalog.opencatalog.uri','https://<open_catalog_account_identifier>.snowflakecomputing.com/polaris/api/catalog') \
.config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \
.config('spark.sql.catalog.opencatalog.token','<access_token>') \
.config('spark.sql.catalog.opencatalog.warehouse','<catalog_name>') \
.config('spark.sql.catalog.opencatalog.client.region','<target_s3_region>') \
.getOrCreate()
パラメーター¶
パラメーター |
説明 |
|---|---|
|
接続先のカタログ名を指定します。 |
|
使用するクライアントアプリケーションのアクセストークンを指定します。 |
|
オープンカタログアカウントのアカウント識別子を指定します。アカウントのリージョンやクラウドプラットフォームによっては、この識別子はそれ自体がアカウントのロケータになることもあれば(例えば、 |
|
Apache Icebergテーブルを含むS3バケットがあるリージョンコードを指定します。リージョンコードについては、AWS サービスエンドポイント をご覧になり、表のリージョン列をご参照ください。 |
例¶
このセクションには、Sparkを使用してOpen Catalogに接続する例が含まれています。
例1:接続(S3)¶
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('iceberg_lab') \
.config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,software.amazon.awssdk:bundle:2.20.160') \
.config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
.config('spark.sql.defaultCatalog', 'opencatalog') \
.config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \
.config('spark.sql.catalog.opencatalog.type', 'rest') \
.config('spark.sql.catalog.opencatalog.uri','https://ab12345.snowflakecomputing.com/polaris/api/catalog') \
.config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \
.config('spark.sql.catalog.opencatalog.token','0000000000000000000000000001111111111111111111111111111111111111111111') \
.config('spark.sql.catalog.opencatalog.warehouse','Catalog1') \
.getOrCreate()
例2:接続(Google Cloud Storage)¶
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('iceberg_lab') \
.config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,org.apache.iceberg:iceberg-gcp-bundle:1.5.2') \
.config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
.config('spark.sql.defaultCatalog', 'opencatalog') \
.config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \
.config('spark.sql.catalog.opencatalog.type', 'rest') \
.config('spark.sql.catalog.opencatalog.uri','https://ab12345.snowflakecomputing.com/polaris/api/catalog') \
.config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \
.config('spark.sql.catalog.opencatalog.token','0000000000000000000000000001111111111111111111111111111111111111111111') \
.config('spark.sql.catalog.opencatalog.warehouse','Catalog1') \
.getOrCreate()
例3:接続(Azure)¶
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('iceberg_lab') \
.config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,org.apache.iceberg:iceberg-azure-bundle:1.5.2') \
.config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
.config('spark.sql.defaultCatalog', 'opencatalog') \
.config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \
.config('spark.sql.catalog.opencatalog.type', 'rest') \
.config('spark.sql.catalog.opencatalog.uri','https://ab12345.snowflakecomputing.com/polaris/api/catalog') \
.config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \
.config('spark.sql.catalog.opencatalog.token','0000000000000000000000000001111111111111111111111111111111111111111111') \
.config('spark.sql.catalog.opencatalog.warehouse','Catalog1') \
.getOrCreate()
オープンカタログへの接続の確認¶
Sparkがオープンカタログに接続されていることを確認するには、カタログの名前空間をリスト表示します。詳細については、名前空間のリスト表示をご参照ください。