Se connecter à Snowflake Open Catalog avec l’authentification par paire de clés¶
Cette rubrique décrit comment se connecter à Snowflake Open Catalog avec l’authentification par paire de clés à l’aide d’une application cliente.
L’exemple de code de cette rubrique montre comment se connecter à l’aide d’Apache Spark™, et l’exemple de code se trouve dans PySpark.
Conditions préalables¶
Avant de pouvoir vous connecter à Open Catalog avec l’authentification par paire de clés, vous devez configurer une authentification par paire de clés dans Open Catalog. Pour obtenir des instructions, consultez [Configurer l’authentification par paire de clés dans Snowflake Open Catalog] (key-pair-auth-configure.md).
Se connecter à Open Catalog¶
L’exemple de code suivant montre comment se connecter à Open Catalog à l’aide de Spark.
Paramètres¶
Paramètre |
Description |
|---|---|
|
Spécifie le nom du catalogue auquel se connecter. |
|
Spécifie les coordonnées Maven pour votre fournisseur de stockage Cloud externe :
|
|
Spécifie le jeton d’accès pour l’application cliente à utiliser. |
|
Spécifie l’identificateur de compte pour votre compte 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()
Se connecter à l’aide d’une connexion interrégionale (Amazon S3 uniquement)¶
L’exemple de code suivant montre comment se connecter à Open Catalog lorsque les conditions suivantes sont remplies :
Votre compte Open Catalog est hébergé sur Amazon S3.
Votre fournisseur de stockage externe est Amazon S3.
Votre compte Open Catalog est hébergé dans une région S3 différente de la région S3 où se trouve le compartiment de stockage contenant vos tables Apache Iceberg™.
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()
Paramètres¶
Paramètre |
Description |
|---|---|
|
Spécifie le nom du catalogue auquel se connecter. |
|
Spécifie le jeton d’accès pour l’application cliente à utiliser. |
|
Spécifie l’identificateur de compte pour votre compte Open Catalog. En fonction de la région et de la plateforme Cloud du compte, cet identificateur peut être le localisateur de compte à lui seul (par exemple, |
|
Spécifie le code de région où se trouve le compartiment S3 contenant vos tables Apache Iceberg. Pour les codes de région, voir Points de terminaison de service AWS et consultez la colonne Région dans la table. |
Exemples¶
Cette section contient des exemples de connexion à Open Catalog à l’aide de Spark :
[Exemple 1 : Se connecter (S3)] (#example-1-connect-s3)
[Exemple 2 : Se connecter (Cloud Storage de Google)] (#example-2-connect-cloud-storage-from-google)
[Exemple 3 : Se connecter (Azure)] (#example-3-connect-azure)
Exemple 1 : Se connecter (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()
Exemple 2 : Se connecter (Cloud Storage de 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()
Exemple 3 : Se connecter (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()
Vérification de la connexion à Open Catalog¶
Pour vérifier que Spark est connecté à Open Catalog, répertoriez les espaces de noms du catalogue. Pour plus d’informations, voir Référencement d’espaces de noms.