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 de lancer la démonstration, assurez-vous que vous disposez des éléments suivants :
Compte Snowflake : Accès à un compte Snowflake disposant de privilèges suffisants pour créer des bases de données, des schémas et des tables, et gérer les paramètres de sécurité.
Environnement de développement Java : Java 11 ou supérieur installé, ainsi que Maven pour la gestion des dépendances.
Snowpipe Streaming JAR : Le fichier
snowpipe-streaming.jar
, qui doit être inclus manuellement dans votre projet.Incluez la dernière version de JAR dans votre projet comme le montre Étape 3 : Configurer le projet de démonstration.
Téléchargez l’échantillon de code Java.
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 effectue des appels de l’API REST à Snowflake et à AWS S3.
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¶
Exécutez les commandes SQL suivantes dans votre compte Snowflake (par exemple, en utilisant Snowsight ou SnowSQL) pour créer les objets nécessaires et configurer l’authentification pour votre utilisateur. Remplacez les espaces réservés tels que MY_USER
, MY_DATABASE
, etc. par les noms de votre choix.
-- Create Database and Schema
CREATE OR REPLACE DATABASE MY_DATABASE;
CREATE OR REPLACE SCHEMA MY_SCHEMA;
-- Create 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')));
-- Configure Authentication Policy (optional, but recommended for explicit control)
CREATE OR REPLACE AUTHENTICATION POLICY testing_auth_policy
AUTHENTICATION_METHODS = ('SAML', 'PASSWORD', 'OAUTH', 'KEYPAIR')
CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL', 'DRIVERS');
-- Create or Modify User for SDK Authentication
CREATE OR REPLACE USER MY_USER; -- Or ALTER USER MY_USER if it already exists
-- Grant necessary roles to the user
GRANT ROLE ACCOUNTADMIN TO USER MY_USER; -- Grant a role with sufficient privileges
-- Apply authentication policy (if created)
ALTER USER MY_USER SET AUTHENTICATION POLICY testing_auth_policy;
-- Set default role (optional)
ALTER USER MY_USER SET DEFAULT_ROLE=ACCOUNTADMIN;
-- Set the public key for key-pair authentication
ALTER USER MY_USER SET RSA_PUBLIC_KEY='YOUR_FORMATTED_PUBLIC_KEY';
Note
Remplacez YOUR_FORMATTED_PUBLIC_KEY
par la sortie de la variable PUBK
de l’étape de génération des clés.
É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 du projet de démonstration Java fourni.
Pour formater votre clé privée (rsa_key.p8
) afin de l’inclure dans le fichier profile.json
, exécutez la commande suivante dans votre terminal :
sed 's/$/\\n/' rsa_key.p8 | tr -d '\n'
Cette commande sort votre clé privée avec échappement des caractères de nouvelle ligne, ce qui permet de l’insérer dans une chaîne JSON.
profile.json template¶
{
"user": "MY_USER",
"account": "your_account_identifier",
"url": "https://your_account_identifier.snowflakecomputing.com:443",
"private_key": "YOUR_FORMATTED_PRIVATE_KEY"
}
Remplacez les espaces réservés :
MY_USER
: Votre nom d’utilisateur Snowflake configuré à l’étape précédente.your_account_identifier
: L’identificateur de votre compte Snowflake (par exemple,xy12345
).YOUR_FORMATTED_PRIVATE_KEY
: La sortie de la commandesed
exécutée ci-dessus. Exemple de format :-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----
.
Étape 3 : Configurer le projet de démonstration¶
Ajoutez la dépendance JAR¶
Pour inclure le SDK de Snowpipe Streaming, ajoutez la dépendance suivante à votre pom.xml
Maven. Maven téléchargera automatiquement le JAR à partir 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.
Placez le fichier de profil¶
Assurez-vous que le fichier profile.json
(configuré à l’étape 2) est situé dans le répertoire racine de votre projet.
Étape 4 : Utiliser l’exemple de code Java fourni et exécuter l’application de démonstration¶
Créer et exécuter¶
Naviguez jusqu’au répertoire racine du projet dans votre terminal.
Créez le projet :
mvn clean install
Exécutez la classe principale :
mvn exec:java -Dexec.mainClass="com.snowflake.snowpipestreaming.demo.Main"
É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;