Verbindung zu Snowflake Open Catalog mittels Schlüsselpaar-Authentifizierung herstellen¶
Unter diesem Thema wird beschrieben, wie Sie mit einer Clientanwendung eine Verbindung zu Snowflake Open Catalog mittels Schlüsselpaar-Authentifizierung herstellen.
Der Beispielcode in diesem Thema zeigt, wie Sie mit Apache Spark™ eine Verbindung herstellen. Der Beispielcode liegt in PySpark vor.
Voraussetzungen¶
Bevor Sie eine Verbindung zu Open Catalog per Schlüsselpaar-Authentifizierung herstellen können, müssen Sie die Schlüsselpaar-Authentifizierung in Open Catalog konfigurieren. Eine Anleitung finden Sie unter Schlüsselpaar-Authentifizierung in Snowflake Open Catalog konfigurieren.
Verbindung zu Open Catalog herstellen¶
Der folgende Beispielcode zeigt die Verbindungsherstellung zu Open Catalog mithilfe von Spark.
Parameter¶
Parameter |
Beschreibung |
|---|---|
|
Gibt den Namen des Katalogs an, mit dem eine Verbindung hergestellt werden soll. |
|
Gibt die Maven-Koordinate für Ihren externen Cloudspeicheranbieter an:
|
|
Gibt das Zugriffstoken für die zu verwendende Clientanwendung an. |
|
Gibt den Kontobezeichner für Ihr Open Catalog-Konto an. |
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()
Verbindung mit einer regionenübergreifenden Verbindung herstellen (nur Amazon S3)¶
Der folgende Beispielcode dient zur Verbindung mit Open Catalog, wenn Folgendes zutrifft:
Ihr Open Catalog-Konto wird auf Amazon S3 gehostet.
Ihr externer Speicheranbieter ist Amazon S3.
Ihr Open Catalog-Konto wird in einer S3-Region gehostet, die sich von der S3-Region unterscheidet, in der sich der Speicher Bucket mit Ihren Apache Iceberg™-Tabellen befindet.
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()
Parameter¶
Parameter |
Beschreibung |
|---|---|
|
Gibt den Namen des Katalogs an, mit dem eine Verbindung hergestellt werden soll. |
|
Gibt das Zugriffstoken für die zu verwendende Clientanwendung an. |
|
Gibt den Kontobezeichner für Ihr Open Catalog-Konto an. Je nach Region und Cloud-Plattform für das Konto kann dieser Bezeichner der Kontobezeichner selbst sein (zum Beispiel |
|
Gibt den Code der Region an, in der sich der S3 Bucket befindet, der Ihre Apache Iceberg-Tabellen enthält. Die Codes der Regionen finden Sie unter AWS Dienstendpunkte und in der Spalte „Region“ in der Tabelle. |
Beispiele¶
Dieser Abschnitt enthält Beispiele für die Verbindung zu Open Catalog mit Spark:
Beispiel 1: Verbindung herstellen (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()
Beispiel 2: Verbindung herstellen (Cloud Storage von 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()
Beispiel 3: Verbindung herstellen (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()
Überprüfen Sie die Verbindung zu Open Catalog¶
Um zu überprüfen, ob Spark mit Open Catalog verbunden ist, listen Sie die Namespaces für den Katalog auf. Weitere Informationen finden Sie unter Namespaces auflisten.