키 페어 인증을 사용하여 Snowflake Open Catalog에 연결¶
이 항목에서는 클라이언트 애플리케이션을 사용하여 키 페어 인증으로 Snowflake Open Catalog에 연결하는 방법을 설명합니다.
이 항목의 예제 코드는 Apache Spark™를 사용하여 연결하는 방법을 보여주며, 예제 코드는 PySpark로 되어 있습니다.
전제 조건¶
키 페어 인증으로 Open Catalog에 연결하려면 먼저 Open Catalog에서 키 페어 인증을 구성해야 합니다. 지침은 Snowflake Open Catalog에서 키 페어 인증 구성을 참조하세요.
Open Catalog로 연결¶
다음 예제 코드는 Spark를 사용하여 Open Catalog에 연결하기 위한 코드입니다.
매개 변수¶
매개 변수 |
설명 |
|---|---|
|
연결할 카탈로그의 이름을 지정합니다. |
|
외부 클라우드 저장소 공급자에 대한 Maven 좌표를 지정합니다.
|
|
클라이언트 애플리케이션이 사용할 액세스 토큰을 지정합니다. |
|
Open Catalog 계정에 대한 계정 식별자를 지정합니다. |
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에 연결하기 위한 코드입니다.
Open Catalog 계정이 Amazon S3에 호스팅되어 있습니다.
외부 저장소 공급자는 Amazon S3입니다.
Open Catalog 계정이 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()
매개 변수¶
매개 변수 |
설명 |
|---|---|
|
연결할 카탈로그의 이름을 지정합니다. |
|
클라이언트 애플리케이션이 사용할 액세스 토큰을 지정합니다. |
|
Open Catalog 계정에 대한 계정 식별자를 지정합니다. 계정의 리전과 클라우드 플랫폼에 따라, 이 식별자는 그 자체로 계정 로케이터가 되거나(예: |
|
Apache Iceberg 테이블이 포함된 S3 버킷이 있는 리전 코드를 지정합니다. 리전 코드는 AWS 서비스 엔드포인트를 확인하고 테이블의 Region 열을 참조하십시오. |
예¶
이 섹션에는 Spark를 사용하여 Open Catalog에 연결하는 예가 포함되어 있습니다.
예 1: Connect (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의 클라우드 저장소)¶
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()
Open Catalog에 대한 연결 확인하기¶
Spark가 Open Catalog에 연결되었는지 확인하려면 카탈로그의 네임스페이스를 나열합니다. 자세한 내용은 네임스페이스 목록 섹션을 참조하십시오.