Konfigurationen für Snowpipe Streaming mit leistungsstarker Architektur¶
Diese Anleitung beschreibt die in Java- und Python-SDKs verfügbaren Konfigurationseinstellungen für den leistungsstarken Snowpipe Streaming-Client. Es gibt zwei verschiedene Arten der Konfiguration:
Prozessweite Umgebungsvariablen: Variablen, die die Protokollierung und Kennzahlen für die gesamte laufende Anwendung steuern und vor der Initialisierung des Clients festgelegt werden müssen.
Clientseitige Eigenschaften: Eigenschaften, die die sichere Verbindung und das Datenaufnahmeziel definieren – wie z. B.
url,user``und ``private_key– und für ein bestimmtes Clientobjekt konfiguriert werden, normalerweise über eine Inline-Zuordnung oder eineprofile.json-Datei.
Eine einzelne Anwendung kann mehrere Clientobjekte ausführen. Jedes Objekt hat seine eigenen clientseitigen Eigenschaften, aber sie alle haben die gleichen prozessweiten Einstellungen der Umgebungsvariablen für die Protokollierung und Kennzahlen.
Die leistungsstarke Architektur erfordert, dass der Client explizit an ein bestimmtes PIPE-Objekt gebunden ist, das das Schema, die Transformationen und die Aufnahme in die Zieltabelle verwaltet.
Umgebungsvariablen¶
Diese Konfigurationseinstellungen steuern das prozessweite Verhalten wie Protokollierung und die Erfassung von Kennzahlen. Sie müssen als Umgebungsvariablen konfiguriert werden, bevor das Clientobjekt initialisiert wird. Die folgende Tabelle zeigt die Umgebungsvariablen, die für alle Snowpipe Streaming-Clientobjekte innerhalb desselben Prozesses gelten:
Variable |
Beschreibung |
Standardwert |
|---|---|---|
|
Setzen Sie die Variable auf TRUE, um den integrierten Prometheus-Metrikserver zu aktivieren. |
FALSE |
|
Der Port, der für die Offenlegung von Kennzahlen verwendet wird. |
50000 |
|
Die IP-Adresse, an der der Metrikserver gehostet wird. |
127.0.0.1 |
|
Der minimale Protokolliergrad für die Ausgabe. |
|
Erforderliche Eigenschaften¶
Die leistungsstarke SDK legt mehrere Eigenschaften fest, um sowohl die sichere Verbindung als auch das spezifische Datenaufnahmeziel (die PIPE) festzulegen. Die folgende Tabelle zeigt die erforderlichen Eigenschaften für die Verbindung und Benutzerauthentifizierung:
Eigenschaft |
Beschreibung |
|---|---|
|
URL für den Zugriff auf Ihr Snowflake-Konto, einschließlich Ihres Kontobezeichners. Das Protokoll (https://) und die Portnummer sind optional. |
|
Anmeldename des Benutzers für das Snowflake-Konto. |
|
Snowflake-Kontobezeichner; zum Beispiel xy12345. |
Wenn authorization_type auf JWT (den Standardwert) gesetzt ist, müssen Sie entweder den Inhalt des Schlüssels oder den Pfad zur Schlüsseldatei angeben, wie in der folgenden Tabelle gezeigt:
Eigenschaft |
Beschreibung |
|---|---|
|
Inhalt des privaten Schlüssels, der zur Authentifizierung des Benutzers verwendet wird. Fügen Sie nur den Schlüsselinhalt und keine Kopfzeile, Fußzeile oder Zeilenumbrüche hinzu. |
|
Dateipfad zum privaten Schlüssel, zum Beispiel rsa_key.p8. Dies ist eine Alternative zur direkten Bereitstellung des Schlüsselinhalts. |
Optionale Eigenschaften¶
Die folgende Tabelle zeigt die optionalen Eigenschaften des Hochleistungs-SDK:
Eigenschaft |
Beschreibung |
|---|---|
|
Zugriffssteuerungsrolle, die nach dem Herstellen der Verbindung zu Snowflake für die Sitzung verwendet werden soll. |
|
Eigenschaft, die die Authentifizierungsmethode konfiguriert. Die Optionen sind: JWT (Schlüsselpaar-Authentifizierung, Standard). |
Externalisieren von Geheimnissen¶
Snowflake empfiehlt dringend, dass Sie Geheimnisse externalisieren, wie z. B. die private_key- und OAuth-Anmeldeinformationen, und sie in einem Schlüsselverwaltungsdienst (z. B. AWS KMS) speichern.
Beispiele für die Konfiguration¶
Die folgenden Beispiele zeigen clientseitige Konfigurationen mit Umgebungsvariablen.
Clientseitige Konfiguration über eine profile.json-Datei¶
Das folgende Beispiel zeigt, wie Sie clientseitige Eigenschaften definieren:
// 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"
}
Clientseitige Konfiguration inline bereitgestellt¶
Die folgenden Beispiele zeigen, wie Sie clientseitige Eigenschaften direkt im Code definieren können:
Python-Beispiel¶
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'
Java-Beispiel¶
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'
Konfiguration der Umgebungsvariablen¶
Die folgenden Beispiele zeigen, wie Sie in der Shell prozessweite Umgebungsvariablen definieren, bevor Sie die Anwendung ausführen:
Linux oder macOS (Bash oder 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 (Eingabeaufforderung)¶
# 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