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

<catalog_name>

Spécifie le nom du catalogue auquel se connecter.

Important :
<catalog_name> est sensible à la casse.

<maven_coordinate>

Spécifie les coordonnées Maven pour votre fournisseur de stockage Cloud externe :

  • S3: software.amazon.awssdk:bundle:2.20.160
  • Cloud Storage (de Google) : org.apache.iceberg:iceberg-gcp-bundle:1.5.2
  • Azure : org.apache.iceberg:iceberg-azure-bundle:1.5.2
Si vous ne voyez pas ce paramètre, la valeur correcte est déjà spécifiée dans l’échantillon de code.

<access_token>

Spécifie le jeton d’accès pour l’application cliente à utiliser.

Saisissez le [jeton d’accès que vous avez généré lorsque vous avez configuré l’authentification par paire de clés dans Open Catalog] (key-pair-auth-configure.md#step-6-generate-an-access-token-for-the-user).

<open_catalog_account_identifier>

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, xy12345) ou inclure des segments supplémentaires. Pour plus d’informations,, voir Utilisation d’un localisateur de compte comme identificateur.

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()
Copy

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()
Copy

Paramètres

Paramètre

Description

<catalog_name>

Spécifie le nom du catalogue auquel se connecter.

Important :
<catalog_name> est sensible à la casse.

<access_token>

Spécifie le jeton d’accès pour l’application cliente à utiliser.

Saisissez le [jeton d’accès que vous avez généré lorsque vous avez configuré l’authentification par paire de clés dans Open Catalog] (key-pair-auth-configure.md#step-6-generate-an-access-token-for-the-user).

<open_catalog_account_identifier>

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, xy12345) ou inclure des segments supplémentaires. Pour plus d’informations,, voir Utilisation d’un localisateur de compte comme identificateur.

<target_s3_region>

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()
Copy

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()
Copy

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()
Copy

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.