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.

  • 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
Copy
PUBK=$(cat ./rsa_key.pub | grep -v KEY- | tr -d '\012')
echo "ALTER USER MY_USER SET RSA_PUBLIC_KEY='$PUBK';"
Copy

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';
Copy

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'
Copy

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"
}
Copy

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 commande sed 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>
Copy

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
    
    Copy
  • Exécutez la classe principale :

    mvn exec:java -Dexec.mainClass="com.snowflake.snowpipestreaming.demo.Main"
    
    Copy

É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;
Copy