Configurations pour Snowpipe Streaming avec architecture hautes performances¶
Ce guide décrit les paramètres de configuration du client Snowpipe Streaming hautes performances disponibles dans les SDKs Java et Python. Il existe deux types distincts de configurations :
Variables d’environnement à l’échelle du processus : Variables qui contrôlent la journalisation et les métriques pour l’ensemble de l’application en cours d’exécution et qui doivent être définies avant l’initialisation du client.
Propriétés côté client : Propriétés qui définissent la connexion sécurisée et la cible d’ingestion — telles que,
url,user, etprivate_key— et sont configurées pour un objet client spécifique, généralement via une carte en ligne ou un fichierprofile.json.
Une seule application peut exécuter plusieurs objets clients. Chaque objet possède ses propres propriétés côté client, mais ils partagent tous les mêmes paramètres de variables d’environnement à l’échelle du processus pour la journalisation et les métriques.
L’architecture hautes performances nécessite que le client soit explicitement lié à un objet PIPE spécifique, qui gère le schéma, les transformations et l’ingestion dans la table cible.
Variables d’environnement¶
Ces paramètres de configuration contrôlent le comportement à l’échelle du processus, tel que la journalisation et la collecte de métriques, et doivent être configurés en tant que variables d’environnement avant l’initialisation de l’objet client. Le tableau suivant indique les variables d’environnement qui s’appliquent à tous les objets du client Snowpipe Streaming dans le même processus :
Variable |
Description |
Valeur par défaut |
|---|---|---|
|
Définissez la valeur sur TRUE pour activer le serveur de métriques Prometheus intégré. |
FALSE |
|
Le port utilisé pour exposer les métriques. |
50000 |
|
L’adresse IP à laquelle le serveur de métriques est hébergé. |
127.0.0.1 |
|
Le niveau de journalisation minimum à sortir. |
|
Propriétés requises¶
Le SDK hautes performances requiert plusieurs propriétés pour établir à la fois la connexion sécurisée et la cible d’ingestion spécifique (PIPE). Le tableau suivant indique les propriétés de connexion et d’authentification utilisateur requises :
Propriété |
Description |
|---|---|
|
URL pour accéder à votre compte Snowflake, y compris votre identificateur de compte. Le protocole (https://) et le numéro de port sont facultatifs. |
|
Nom de connexion de l’utilisateur pour le compte Snowflake. |
|
Identificateur de compte Snowflake ; par exemple, xy12345. |
Si authorization_type est défini sur JWT, qui est la valeur par défaut, vous devez fournir soit le contenu de la clé, soit le chemin du fichier de clé, comme indiqué dans le tableau suivant :
Propriété |
Description |
|---|---|
|
Contenu de la clé privée utilisé pour authentifier l’utilisateur. Incluez uniquement le contenu de la clé ; pas de saut de ligne, de pied de page ou d’en-tête. |
|
Chemin d’accès au fichier de la clé privée ; par exemple, rsa_key.p8. Il s’agit d’une alternative à la fourniture directe du contenu de la clé. |
Propriétés facultatives¶
Le tableau suivant indique les propriétés facultatives du SDK hautes performances :
Propriété |
Description |
|---|---|
|
Rôle de contrôle d’accès à utiliser pour la session après la connexion à Snowflake. |
|
Propriété qui configure la méthode d’authentification. Les options sont les suivantes : JWT (authentification par paire de clés, par défaut). |
Externaliser les secrets¶
Snowflake recommande fortement d’externaliser des secrets, tels que les identifiants de connexion private_key et OAuth et de les stocker dans un service de gestion de clés ; par exemple, AWS KMS.
Exemples de configuration¶
Les exemples suivants montrent les configurations côté client et les configurations des variables d’environnement.
Configuration côté client via un fichier profile.json¶
L’exemple suivant montre comment définir les propriétés côté client :
// profile.json
{
"authorization_type": "JWT",
"url": "https://<account_identifier>.snowflakecomputing.com",
"user": "MY_SNOWFLAKE_USER",
"account": "XY12345",
"private_key_file": "/path/to/rsa_key.p8",
"role": "MY_INGEST_ROLE"
}
Configuration côté client fournie en ligne¶
Les exemples suivants montrent comment définir les propriétés côté client directement dans le code :
Exemple Python¶
config = {
"authorization_type": "JWT",
"url": "https://<account_identifier>.snowflakecomputing.com",
"user": "MY_SNOWFLAKE_USER",
"account": "XY12345",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
}
# ... code to initialize client with 'config'
Exemple Java¶
Map<String, Object> config = new HashMap<>();
config.put("authorization_type", "JWT");
config.put("url", "https://<account_identifier>.snowflakecomputing.com");
config.put("user", "MY_SNOWFLAKE_USER");
config.put("account", "XY12345");
config.put("private_key_file", "/path/to/rsa_key.p8");
config.put("role", "MY_INGEST_ROLE");
// ... code to initialize client with 'config'
La configuration de la variable d’environnement¶
Les exemples suivants montrent comment définir des variables d’environnement pour l’ensemble du processus dans le shell avant d’exécuter l’application :
Linux ou macOS (Bash ou Zsh)¶
# Set the log level for the entire application process to 'warn'
export SS_LOG_LEVEL=warn
# Change the IP for metrics to a specific loopback address
export SS_METRICS_IP=127.0.0.5
# Now run your application
Windows (invite de commande)¶
# Set the log level for the entire application process to 'warn'
set SS_LOG_LEVEL=warn
# Change the metrics port
set SS_METRICS_PORT=55000
# Now run your application