Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Connexions Snowflake
Vous pouvez utiliser AWS Glue pour Spark pour lire et écrire dans des tables dans Snowflake dans la version 4.0 et ultérieure d'AWS Glue. Vous pouvez lire depuis Snowflake à l'aide d'une requête SQL. Vous pouvez vous connecter à Snowflake à l'aide d'un nom d'utilisateur et d'un mot de passe. Vous pouvez vous référer aux informations d'identification Snowflake stockées dans AWS Secrets Manager via le catalogue de données AWS Glue. Les informations d'identification Snowflake du catalogue de données pour AWS Glue pour Spark sont stockées séparément des informations d'identification du catalogue de données Snowflake pour les Crawlers. Vous devez choisir un type de connexion SNOWFLAKE et non un type de connexion JDBC configuré pour se connecter à Snowflake.
Pour en savoir plus sur Snowflake, consultez le site web Snowflake
Configuration des connexions Snowflake
Il n'y a aucune condition préalable à AWS pour se connecter aux bases de données Snowflake disponibles sur Internet.
Vous pouvez également effectuer la configuration suivante pour gérer vos informations d'identification de connexion avec AWS Glue.
Pour gérer vos informations d'identification de connexion avec AWS Glue
Dans Snowflake, générez un utilisateur,
snowflakeUseret un mot de passe,snowflakePassword.Dans AWS Secrets Manager, créez un secret à l'aide de vos informations d'identification Snowflake. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la section Créer un secret AWS Secrets Manager dans la documentation AWS Secrets Manager. Après avoir créé le secret, conservez le nom du secret,
secretName, pour l'étape suivante.-
Lorsque vous sélectionnez des paires clé/valeur, créez une paire pour
snowflakeUseravec la cléUSERNAME. -
Lorsque vous sélectionnez des paires clé/valeur, créez une paire pour
snowflakePasswordavec la cléPASSWORD. -
Lorsque vous sélectionnez des paires clé/valeur, vous pouvez fournir à votre entrepôt Snowflake la clé
sfWarehouse. -
Lorsque vous sélectionnez des paires clé/valeur, vous pouvez fournir des propriétés de connexion Snowflake supplémentaires en utilisant les noms de propriété Spark correspondants comme clés. Les propriétés prises en charge sont les suivantes :
sfDatabase: nom de la base de données SnowflakesfSchema: nom du schéma SnowflakesfRole: nom du rôle Snowflakepem_private_key: clé privée pour l’authentification par paire de clés
-
Dans le Catalogue de données AWS Glue, créez une connexion en choisissant Connexions, puis Créer une connexion. Suivez les étapes décrites dans l’assistant de connexion pour finaliser le processus :
Lorsque vous sélectionnez une source de données, sélectionnez Snowflake, puis Suivant.
Saisissez les détails de connexion tels que l’hôte et le port. Lorsque vous saisissez l’URL Snowflake hôte, indiquez l’URL de votre instance Snowflake. L’URL utilisera généralement un nom d’hôte sous la forme
. Cependant, le format de l’URL peut varier en fonction du type de compte Snowflake (par exemple AWS, Azure ou hébergé par Snowflake).account_identifier.snowflakecomputing.com-
Lorsque vous sélectionnez le rôle de service IAM, choisissez dans le menu déroulant. Il s’agit du rôle IAM de votre compte qui sera utilisé pour accéder à AWS Secrets Manager et attribuer l’adresse IP si un VPC est spécifié.
Lorsque vous sélectionnez un Secret AWS, fournissez
secretName.
À l’étape suivante de l’assistant, définissez les propriétés de votre connexion Snowflake.
Dans la dernière étape de l’assistant, examinez vos paramètres, puis terminez le processus de création de votre connexion.
Dans les situations suivantes, vous pouvez avoir besoin des éléments suivants :
-
Pour Snowflake hébergé sur AWS dans un Amazon VPC
-
Vous aurez besoin d'une configuration Amazon VPC appropriée pour Snowflake. Pour plus d'informations sur la configuration de votre Amazon VPC, consultez AWS PrivateLink et Snowflake
dans la documentation Snowflake. -
Vous aurez besoin d'une configuration Amazon VPC appropriée pour AWS Glue. Configuration de points de terminaison d’un VPC d’interface (AWS PrivateLink) pour AWS Glue (AWS PrivateLink).
-
Vous devrez créer une connexion au catalogue de données AWS Glue qui fournit les informations de connexion Amazon VPC (en plus de l'identifiant d'un secret AWS Secrets Manager qui définit vos informations d'identification de sécurité Snowflake). Votre URL changera lors de l'utilisation de AWS PrivateLink, comme décrit dans la documentation Snowflake dont le lien figure dans un point précédent.
-
Vous aurez besoin de la configuration de votre tâche pour inclure la connexion au catalogue de données en tant que connexion réseau supplémentaire.
-
Lecture à partir de tables Snowflake
Conditions préalables : une table Snowflake à partir de laquelle vous souhaitez lire. Vous aurez besoin du nom de la table Snowflake, tableName. Vous aurez besoin de votre URL Snowflake snowflakeUrl, de votre nom d'utilisateur snowflakeUser et de votre mot de passe snowflakePassword. Si votre utilisateur Snowflake ne dispose pas d'un espace de noms par défaut, vous aurez besoin du nom de la base de données Snowflake, databaseName et du nom du schéma schemaName. De plus, si votre utilisateur Snowflake ne dispose pas d'un entrepôt par défaut, vous aurez besoin d'un nom d'entrepôt warehouseName.
Par exemple :
Conditions préalables supplémentaires : suivez les étapes Pour gérer vos informations d'identification de connexion avec AWS Glue afin de configurer snowflakeUrl, snowflakeUsername et snowflakePassword. Pour passer en revue ces étapes, reportez-vous à la section précédente, Configuration des connexions Snowflake. Pour sélectionner la connexion réseau supplémentaire à laquelle se connecter, nous utiliserons le paramètre connectionName.
snowflake_read = glueContext.create_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "connectionName": "connectionName", "dbtable": "tableName", "sfDatabase": "databaseName", "sfSchema": "schemaName", "sfWarehouse": "warehouseName", } )
De plus, vous pouvez utiliser les paramètres autopushdown et query pour lire une partie d'une table Snowflake. Cela peut être nettement plus efficace que de filtrer vos résultats une fois qu'ils ont été chargés dans Spark. Prenons un exemple où toutes les ventes sont stockées dans la même table, mais où vous n'avez besoin d'analyser que les ventes d'un certain magasin pendant les jours fériés. Si ces informations sont stockées dans la table, vous pouvez utiliser le pushdown de prédicat pour récupérer les résultats comme suit :
snowflake_node = glueContext.create_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "autopushdown": "on", "query": "select * from sales where store='1' and IsHoliday='TRUE'", "connectionName": "snowflake-glue-conn", "sfDatabase": "databaseName", "sfSchema": "schemaName", "sfWarehouse": "warehouseName", } )
Écrire sur les tables Snowflake
Conditions préalables : une base de données Snowflake sur laquelle vous souhaitez écrire. Vous aurez besoin d'un nom de table actuel ou souhaité, tableName. Vous aurez besoin de votre URL Snowflake snowflakeUrl, de votre nom d'utilisateur snowflakeUser et de votre mot de passe snowflakePassword. Si votre utilisateur Snowflake ne dispose pas d'un espace de noms par défaut, vous aurez besoin du nom de la base de données Snowflake, databaseName et du nom du schéma schemaName. De plus, si votre utilisateur Snowflake ne dispose pas d'un entrepôt par défaut, vous aurez besoin d'un nom d'entrepôt warehouseName.
Par exemple :
Conditions préalables supplémentaires : suivez les étapes Pour gérer vos informations d'identification de connexion avec AWS Glue afin de configurer snowflakeUrl, snowflakeUsername et snowflakePassword. Pour passer en revue ces étapes, reportez-vous à la section précédente, Configuration des connexions Snowflake. Pour sélectionner la connexion réseau supplémentaire à laquelle se connecter, nous utiliserons le paramètre connectionName.
glueContext.write_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "connectionName": "connectionName", "dbtable": "tableName", "sfDatabase": "databaseName", "sfSchema": "schemaName", "sfWarehouse": "warehouseName", }, )
Référence des options de connexion Snowflake
Le type de connexion Snowflake accepte les options de connexion suivantes :
Vous pouvez récupérer certains paramètres de cette section à partir d'une connexion au catalogue de données (sfUrl, sfUser, sfPassword), auquel cas vous n'êtes pas obligé de les fournir. Pour ce faire, fournissez le paramètre connectionName.
Vous pouvez récupérer les paramètres de connexion à partir des secrets AWS Secrets Manager à l’aide du paramètre secretId. Lorsque vous utilisez Secrets Manager, les propriétés Spark suivantes peuvent être automatiquement récupérées si elles sont présentes dans le secret :
sfUser(à l’aide d’une cléUSERNAMEousfUser)sfPassword(à l’aide d’une cléPASSWORDousfPassword)sfWarehouse(à l’aide d’une clésfWarehouse)sfDatabase(à l’aide d’une clésfDatabase)sfSchema(à l’aide d’une clésfSchema)sfRole(à l’aide d’une clésfRole)pem_private_key(à l’aide d’une clépem_private_key)
Ordre de priorité des propriétés : lorsque la même propriété est spécifiée à plusieurs emplacements, AWS Glue utilise l’ordre de priorité suivant (du plus haut au plus bas) :
Options de connexion explicitement fournies dans votre code de tâche
Propriétés de la connexion au catalogue de données
Valeurs secrètes AWS Secrets Manager (lorsque
secretIdest spécifié)Paramètres utilisateur par défaut de Snowflake
Les paramètres suivants sont généralement utilisés lors de la connexion à Snowflake.
sfDatabase: obligatoire si aucune valeur par défaut de l'utilisateur n'est définie dans Snowflake. Utilisé pour la lecture/l'écriture. La base de données à utiliser pour la session après la connexion.sfSchema: obligatoire si aucune valeur par défaut de l'utilisateur n'est définie dans Snowflake. Utilisé pour la lecture/l'écriture. Le schéma à utiliser pour la session après la connexion.sfWarehouse: obligatoire si aucune valeur par défaut de l'utilisateur n'est définie dans Snowflake. Utilisé pour la lecture/l'écriture. L'entrepôt virtuel par défaut à utiliser pour la session après la connexion.sfRole: obligatoire si aucune valeur par défaut de l'utilisateur n'est définie dans Snowflake. Utilisé pour la lecture/l'écriture. Le rôle de sécurité par défaut à utiliser pour la session après la connexion.-
sfUrl: (obligatoire) utilisé pour la lecture/l'écriture. Indique le nom d'hôte de votre compte au format suivant :. Pour plus d'informations sur les identifiants de compte, consultez Identifiants de compteaccount_identifier.snowflakecomputing.comdans la documentation de Snowflake. sfUser: (obligatoire) utilisé pour la lecture/l'écriture. Nom de connexion de l'utilisateur Snowflake.sfPassword: (Obligatoire sauf si la clépem_private_keyest fournie) utilisé pour la lecture/l’écriture. Mot de passe de l'utilisateur Snowflake.dbtable: obligatoire lorsque vous travaillez avec des tables complètes. Utilisé pour la lecture/l'écriture. Le nom de la table à lire ou de la table dans laquelle les données sont écrites. Lors de la lecture, toutes les colonnes et tous les enregistrements sont récupérés.-
pem_private_key: utilisé pour la lecture/l'écriture. Chaîne de clé privée codée en b64 non chiffrée. Clé privée de l’utilisateur Snowflake. Il est courant de la copier à partir d’un fichier PEM. Pour plus d’informations, consultez Authentification par paire de clés et rotation des paires de clésdans la documentation Snowflake. query: obligatoire lors de la lecture avec une requête. Utilisé pour la lecture. La requête exacte (instructionSELECT) à exécuter
Les options suivantes sont utilisées pour configurer des comportements spécifiques lors du processus de connexion à Snowflake.
-
preactions: utilisé pour la lecture/l'écriture. Valeurs valides : liste d'instructions SQL séparées par des points-virgules sous forme de chaîne. Les instructions SQL sont exécutées avant le transfert des données entre AWS Glue et Snowflake. Si une instruction contient%s,%sest remplacé par le nom de table référencé pour l'opération. -
postactions: utilisé pour la lecture/l'écriture. Les instructions SQL sont exécutées après le transfert des données entre AWS Glue et Snowflake. Si une instruction contient%s,%sest remplacé par le nom de table référencé pour l'opération. -
autopushdown:"on"par défaut. Valeurs valides :"on","off". Ce paramètre contrôle si le pushdown automatique des requêtes est activé. Lorsque l'option pushdown est activée, si une partie de la requête peut être « poussée vers le bas » sur le serveur Snowflake, elle est poussée vers le bas au moment de l'exécution de la requête sur Spark. Cela améliore les performances de certaines requêtes. Pour savoir si votre requête peut être poussée vers le bas, consultez Pushdowndans la documentation de Snowflake.
En outre, certaines des options disponibles sur le connecteur Snowflake Spark peuvent être prises en charge dans AWS Glue. Pour plus d'informations sur les options disponibles sur le connecteur Snowflake Spark, consultez la section Réglage des options de configuration du connecteur
Méthodes d’authentification Snowflake
AWS Glue prend en charge les méthodes d’authentification suivantes pour la connexion à Snowflake :
-
Authentification par nom d’utilisateur et mot de passe : indiquez les paramètres
sfUseretsfPassword. -
Authentification par paire de clés : indiquez les paramètres
sfUseretpem_private_key. Lorsque vous utilisez l’authentification par paire de clés, le paramètresfPasswordn’est pas obligatoire.
Les deux méthodes d’authentification sont entièrement prises en charge et peuvent être configurées à l’aide de n’importe quelle combinaison d’options de connexion, de connexions du catalogue de données ou de secrets AWS Secrets Manager.
Limites du connecteur Snowflake
La connexion à Snowflake avec AWS Glue pour Spark est soumise aux limitations suivantes.
-
Ce connecteur ne prend pas en charge les signets de tâches. Pour plus d'informations sur les signets de tâche, consultez Suivi des données traitées à l'aide de signets de tâche.
-
Ce connecteur ne prend pas en charge les lectures et écritures de Snowflake via les tables du catalogue de données AWS Glue à l'aide des méthodes
create_dynamic_frame.from_catalogetwrite_dynamic_frame.from_catalog. -
Ce connecteur prend en charge l’authentification par nom d’utilisateur/mot de passe et l’authentification par paire de clés. Les autres méthodes d’authentification (telles que OAuth ou SAML) ne sont actuellement pas prises en charge.
-
Ce connecteur n'est pas pris en charge dans les tâches de streaming.
-
Ce connecteur prend en charge les requêtes basées sur des instructions
SELECTlors de la récupération d'informations (par exemple avec le paramètrequery). Les autres types de requêtes (telles queSHOW,DESCou les instructions DML) ne sont pas pris en charge. -
Snowflake limite la taille du texte de la requête (c'est-à-dire les instructions SQL) soumis par les clients Snowflake à 1 Mo par instruction. Pour plus d'informations, consultez Limites de la taille du texte de requête
.