Tutoriel : Premiers pas avec l’architecture hautes performances du SDK Snowpipe Streaming¶
Ce tutoriel fournit des instructions pas à pas pour la configuration et l’exécution d’une application de démonstration qui utilise la nouvelle architecture haute performance avec le SDK de snowpipe-streaming.
Conditions préalables¶
Avant d’exécuter la démo, assurez-vous de remplir les conditions préalables suivantes :
Compte Snowflake : Vérifiez que vous avez accès à un compte Snowflake. Vous aurez besoin d’un utilisateur avec des privilèges suffisants (par ex., ACCOUNTADMIN ou USERADMIN pour la configuration initiale) pour créer l’utilisateur dédié et le rôle personnalisé détaillé dans Étape 1 : Configurer les objets Snowflake.
Accès au réseau : Assurez-vous que votre réseau autorise la connectivité sortante vers Snowflake et Amazon S3 ou Google Cloud Platform (GCS) ou Azure Blob Storage. Ajustez les règles du pare-feu si nécessaire, car le SDK effectue des appels API REST vers Snowflake et vers votre fournisseur de stockage dans le Cloud.
Pour vérifier la connectivité réseau, utilisez la commande suivante :
Environnement de développement Java : Installez Java 11 ou une version ultérieure, ainsi que Maven pour la gestion des dépendances.
Python : Installez la version 3.9 de Python ou une version ultérieure.
Configuration système requise : Le SDK requiert la version glibc 2.26 ou ultérieure. Vous pouvez vérifier votre version actuelle de glibc avec :
SDKs Snowpipe Streaming et exemple de code :
Pour AWS : Obtenir le SDK Java ou SDK Python (n’importe quelle version).
Pour Azure : nécessite SDK version 1.1.0 ou ultérieure.
Pour GCP: nécessite SDK version 1.1.0 ou ultérieure.
Téléchargez l’échantillon de code pour votre langage privilégié depuis les exemples Snowpipe Streaming SDK dans le référentiel GitHub.
Prise en main¶
Cette section présente les exigences requises pour la configuration et l’exécution de l’application de démonstration.
Étape 1 : Configurer les objets Snowflake¶
Avant de pouvoir utiliser le SDK snowpipe-streaming, vous devez créer une table cible dans votre environnement Snowflake. Contrairement à l’architecture classique, l’architecture haute performance nécessite un objet PIPE pour l’ingestion de données. Ce tutoriel utilise le canal par défaut qui est automatiquement créé au moment de l’ingestion pour votre table cible. Si vous avez besoin de fonctionnalités supplémentaires, telles que des transformations en cours ou le clustering au moment de l’ingestion, voir CREATE PIPE.
Générer une paire de clés pour l’authentification¶
Générez une paire de clés privée-publique pour l’authentification à l’aide de OpenSSL. Pour plus d’informations, voir Authentification par paire de clés et rotation de paires de clés.
Exécutez les commandes suivantes dans votre terminal pour générer les clés :
Important
Enregistrez les fichiers rsa_key.p8 (clé privée) et rsa_key.pub (clé publique) générés en toute sécurité. Vous utiliserez ces clés dans les étapes d’authentification suivantes.
Créer une base de données, un schéma ou une table et configurer l’authentification utilisateur¶
Exécutez les commandes SQL suivantes dans votre compte Snowflake ; par exemple, à l’aide de Snowsight ou de Snowflake CLI. Vous devez disposer d’un rôle doté des autorisations nécessaires pour créer des utilisateurs, des rôles et des bases de données — comme ACCOUNTADMIN ou USERADMIN pour les premières lignes, puis passer au nouveau rôle. Remplacez les espaces réservés tels que MY_USER, MY_ROLE, MY_DATABASE, et ainsi de suite, avec les noms que vous voulez.
Note
La colonne data de la table d’exemple est un type VARIANT. Le SDK hautes performances exige que les données de cette colonne soient transmises en tant qu’objet natif ; par exemple, une Map Java ou un dictionnaire Python. La transmission d’une chaîne JSON brute entraîne le stockage de données sous forme de littéral de chaîne.
Étape 2 : Configurer un profil d’authentification¶
L’application de démonstration nécessite un fichier profile.json pour stocker les paramètres de connexion, y compris les détails d’authentification. Le SDK utilise l’authentification par paire de clés pour les connexions sécurisées.
Créer un fichier de configuration de profil¶
Créez ou mettez à jour le fichier profile.json dans le répertoire racine de votre projet de démonstration.
profile.json template¶
Remplacez les espaces réservés :
MY_USER: Votre nom d’utilisateur Snowflake configuré à l’Étape 1 : Configurer les objets Snowflake.your_account_identifier: L’identificateur de votre compte Snowflake (par exemple,xy12345).rsa_key.p8: Le fichier de clé privée que vous avez généré à l’Étape 1 : Configurer les objets Snowflake.MY_ROLE: Le rôle dédié (MY_ROLE) que vous avez créé et accordé à l’utilisateur dans Étape 1 : Configurer les objets Snowflake.
Étape 3 : Configurer le projet de démonstration¶
Téléchargement : exemple de code Java
Ajoutez la dépendance JAR
Pour inclure le SDK Snowpipe Streaming, ajoutez la dépendance suivante à votre Maven pom.xml. Maven télécharge automatiquement le JAR du référentiel public.
Important
Remplacez YOUR_SDK_VERSION par la version spécifique disponible sur Maven Central.
Téléchargement : exemple de code Python
Ajouter la dépendance Python
Le SDK requiert la version 3.9 de Python ou une version ultérieure.
Pour installer le SDK Snowpipe Streaming pour Python, exécutez la commande suivante :
Pour plus d’informations sur le paquet, consultez PyPI.
Placez le fichier de profil¶
Assurez-vous que le fichier profile.json que vous avez configuré à l’Étape 2 : Configurer un profil d’authentification se trouve dans le répertoire racine de votre projet.
Étape 4 : Utiliser l’exemple de code fourni et exécuter l’application de démonstration¶
Sur votre terminal, accédez au répertoire racine du projet.
Créer et exécuter
Créez le projet :
Exécutez la classe principale :
Exécuter l’application de démonstration
Exécutez la démonstration Python :
Étape 5 : Vérifier les données¶
Après avoir exécuté la démonstration, vérifiez les données ingérées dans Snowflake :
Vérifiez que vos données ont été ingérées sous forme d’objet structuré plutôt que sous forme de littéral de chaîne :
Si
data_typerenvoieOBJECT, l’ingestion est correcte.Si
data_typerenvoieVARCHAR, votre application transmet un littéral de chaîne qui n’est pas analysé.