Tutoriel : Prise en main du SDK de l’architecture haute performance de 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 AWS S3. Ajustez les règles du pare-feu si nécessaire, car le SDK fait des appels API REST vers Snowflake et vers AWS S3.
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.
Snowpipe Streaming SDKs and the sample code: Obtain the Java SDK or Python SDK and download the sample code for your preferred language from the Snowpipe Streaming SDK examples in the GitHub repository.
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 d’utiliser le SDK de snowpipe-streaming, vous devez créer une table cible et un objet PIPE dédié dans votre environnement Snowflake. Contrairement à l’architecture classique, l’architecture haute performance requiert un objet PIPE pour l’ingestion des données.
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 :
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
PUBK=$(cat ./rsa_key.pub | grep -v KEY- | tr -d '\012')
echo "ALTER USER MY_USER SET RSA_PUBLIC_KEY='$PUBK';"
Important
Enregistrez les fichiers rsa_key.p8 (clé privée) et rsa_key.pub (clé publique) générés en toute sécurité. Ils seront utilisés lors des étapes d’authentification suivantes.
Créer une base de données, un schéma, une table, un canal et configurer l’authentification des utilisateurs¶
Run the following SQL commands in your Snowflake account (for example, using Snowsight or Snowflake CLI). Note that you will need a role with permissions to create users, roles, and databases (such as ACCOUNTADMIN or USERADMIN for the first few lines, and then switching to the new role). Replace placeholders like MY_USER, MY_ROLE, MY_DATABASE, and so on, with your desired names.
-- 1. Create a dedicated role and user (Run with a highly-privileged role)
CREATE OR REPLACE USER MY_USER;
CREATE ROLE IF NOT EXISTS MY_ROLE;
GRANT ROLE MY_ROLE TO USER MY_USER;
-- 2. Set the public key for key-pair authentication
-- NOTE: Replace 'YOUR_FORMATTED_PUBLIC_KEY' with the output of the PUBK variable from the key generation step.
ALTER USER MY_USER SET RSA_PUBLIC_KEY='YOUR_FORMATTED_PUBLIC_KEY';
-- 3. Set the default role (Recommended)
ALTER USER MY_USER SET DEFAULT_ROLE=MY_ROLE;
-- 4. Switch to the new role and create objects
USE ROLE MY_ROLE;
-- NOTE: You may also need to run USE WAREHOUSE YOUR_WH; here if a default warehouse isn't set.
-- Create database and schema
CREATE OR REPLACE DATABASE MY_DATABASE;
CREATE OR REPLACE SCHEMA MY_SCHEMA;
-- Create a target table
CREATE OR REPLACE TABLE MY_TABLE (
data VARIANT,
c1 NUMBER,
c2 STRING
);
-- Create PIPE object for streaming ingestion
CREATE OR REPLACE PIPE MY_PIPE
AS COPY INTO MY_TABLE FROM (SELECT $1, $1:c1, $1:ts FROM TABLE(DATA_SOURCE(TYPE => 'STREAMING')));
-- 5. Configure authentication policy (Optional, but recommended for explicit control)
CREATE OR REPLACE AUTHENTICATION POLICY testing_auth_policy
AUTHENTICATION_METHODS = ('KEYPAIR')
CLIENT_TYPES = ('DRIVERS');
-- Apply authentication policy (if created)
ALTER USER MY_USER SET AUTHENTICATION POLICY testing_auth_policy;
É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¶
{
"user": "MY_USER",
"account": "your_account_identifier",
"url": "https://your_account_identifier.snowflakecomputing.com:443",
"private_key_file": "rsa_key.p8",
"role": "MY_ROLE"
}
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¶
Download: Sample Java code
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.
<dependency>
<groupId>com.snowflake</groupId>
<artifactId>snowpipe-streaming</artifactId>
<version>YOUR_SDK_VERSION</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.18.1</version>
</dependency>
Important
Remplacez YOUR_SDK_VERSION par la version spécifique disponible sur Maven Central.
Download: Sample Python code
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 :
pip install snowpipe-streaming
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 :
mvn clean install
Exécutez la classe principale :
mvn exec:java -Dexec.mainClass="com.snowflake.snowpipestreaming.demo.Main"
Exécuter l’application de démonstration
Exécutez la démonstration Python :
python example.py
É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 :
SELECT COUNT(*) FROM MY_DATABASE.MY_SCHEMA.MY_TABLE;
SELECT * FROM MY_DATABASE.MY_SCHEMA.MY_TABLE LIMIT 10;