Tutorial: Erste Schritte mit dem Snowpipe Streaming High-Performance-Architektur-SDK¶
Dieses Tutorial enthält eine Schritt-für-Schritt-Anleitung zum Einrichten und Ausführen einer Demo-Anwendung, die die neue High-Performance-Architektur mit snowpipe-streaming
SDK nutzt.
Voraussetzungen¶
Bevor Sie die Demo ausführen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
Snowflake-Konto: Vergewissern Sie sich, dass Sie Zugriff auf ein Snowflake-Konto haben, das ausreichende Berechtigungen zum Erstellen von Datenbanken, Schemas und Tabellen sowie zum Verwalten von Sicherheitseinstellungen hat.
Netzwerkzugriff: Stellen Sie sicher, dass Ihr Netzwerk ausgehende Konnektivität zu Snowflake und AWS S3 zulässt. Passen Sie bei Bedarf die Firewall-Regeln an, da die SDK REST API-Aufrufe an Snowflake und AWS S3 macht.
Snowpipe Streaming SDK: Laden Sie die SDK und Beispielcode für Ihre bevorzugte Sprache herunter:
Java-Entwicklungsumgebung Installieren Sie Java 11 oder höher und Maven für die Verwaltung von Abhängigkeiten.
Fügen Sie die neueste Version von JAR in Ihr Projekt ein, wie Schritt 3: Richten Sie das Demoprojekt ein demonstriert.
Laden Sie den Java-Beispielcode herunter.
Installieren Sie die Snowpipe Streaming SDK für Python wie Schritt 3: Richten Sie das Demoprojekt ein veranschaulicht.
Laden Sie den Python-Beispielcode herunter.
Erste Schritte¶
In diesem Abschnitt werden die Schritte beschrieben, die zur Einrichtung und Ausführung der Demo-Anwendung erforderlich sind.
Schritt 1: Konfigurieren Sie Snowflake-Objekte¶
Bevor Sie snowpipe-streaming
SDK verwenden, müssen Sie eine Zieltabelle und ein spezielles PIPE-Objekt in Ihrer Snowflake-Umgebung erstellen. Im Gegensatz zur klassischen Architektur benötigt die High-Performance-Architektur ein PIPE-Objekt für die Datenaufnahme.
Schlüsselpaar zur Authentifizierung generieren¶
Erzeugen Sie ein Schlüsselpaar aus privatem und öffentlichem Schlüssel für die Authentifizierung mit OpenSSL. Weitere Informationen dazu finden Sie unter Schlüsselpaar-Authentifizierung und Schlüsselpaar-Rotation.
Führen Sie die folgenden Befehle in Ihrem Terminal aus, um die Schlüssel zu erzeugen:
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';"
Wichtig
Speichern Sie die generierten Dateien rsa_key.p8
(privater Schlüssel) und rsa_key.pub
(öffentlicher Schlüssel) sicher. Sie werden in den nachfolgenden Authentifizierungsschritten verwendet.
Datenbank, Schema, Tabelle, Pipe erstellen und Benutzer-Authentifizierung konfigurieren¶
Führen Sie die folgenden SQL-Befehle in Ihrem Snowflake-Konto aus (z. B. mit Snowsight oder SnowSQL), um die erforderlichen Objekte zu erstellen und die Authentifizierung für Ihren Benutzer zu konfigurieren. Ersetzen Sie Platzhalter wie MY_USER
, MY_DATABASE
, usw. durch die von Ihnen gewünschten Namen.
-- 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';
Bemerkung
Ersetzen Sie YOUR_FORMATTED_PUBLIC_KEY
durch die Ausgabe der Variable PUBK
aus dem Schritt der Schlüsselerzeugung.
Schritt 2: Konfigurieren Sie ein Authentifizierungsprofil¶
Die Demo-Anwendung benötigt eine profile.json
Datei, um die Verbindungseinstellungen, einschließlich der Authentifizierungsdetails, zu speichern. Das SDK verwendet die Schlüsselpaar-Authentifizierung für sichere Verbindungen.
Profilkonfigurationsdatei erstellen¶
Erstellen oder aktualisieren Sie die Datei profile.json
im Stammverzeichnis des bereitgestellten Java-Demoprojekts.
Um Ihren privaten Schlüssel (rsa_key.p8
) für die Aufnahme in die Datei profile.json
zu formatieren, führen Sie den folgenden Befehl in Ihrem Terminal aus:
sed 's/$/\\n/' rsa_key.p8 | tr -d '\n'
Dieser Befehl gibt Ihren privaten Schlüssel mit umgebrochenen Zeilenumbrüchen aus, so dass er sich für eine JSON-Zeichenfolge eignet.
profile.json-Vorlage¶
{
"user": "MY_USER",
"account": "your_account_identifier",
"url": "https://your_account_identifier.snowflakecomputing.com:443",
"private_key": "YOUR_FORMATTED_PRIVATE_KEY"
}
Ersetzen Sie die Platzhalter:
MY_USER
: Ihr Snowflake-Benutzername, den Sie im vorherigen Schritt konfiguriert haben.your_account_identifier
: Ihr Snowflake-Kontobezeichner (z. B.xy12345
).YOUR_FORMATTED_PRIVATE_KEY
: Die Ausgabe des oben ausgeführten Befehlssed
. Beispielformat:-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----
.
Schritt 3: Richten Sie das Demoprojekt ein¶
JAR-Abhängigkeit hinzufügen
Um die Snowpipe Streaming SDK einzubinden, fügen Sie die folgende Abhängigkeit zu Ihrer Maven pom.xml
hinzu. Maven lädt automatisch JAR aus dem öffentlichen Repository herunter.
<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>
Wichtig
Ersetzen Sie YOUR_SDK_VERSION
durch die spezifische Version, die auf Maven Central verfügbar ist.
Python-Abhängigkeit hinzufügen
Die SDK erfordert Python, Version 3.9 oder höher.
Um die Snowpipe Streaming SDK für Python zu installieren, führen Sie den folgenden Befehl aus:
pip install snowpipe-streaming
Platzieren Sie die Profildatei¶
Stellen Sie sicher, dass sich die Datei profile.json
, die Sie in Schritt 2 konfiguriert haben, im Stammverzeichnis Ihres Projekts befindet.
Schritt 4: Verwenden Sie das bereitgestellte Codebeispiel, und führen Sie die Demo-Anwendung aus¶
Navigieren Sie in Ihrem Terminal zum Stammverzeichnis des Projekts.
Erstellen und Ausführen
Erstellen Sie das Projekt:
mvn clean install
Führen Sie die Hauptklasse aus:
mvn exec:java -Dexec.mainClass="com.snowflake.snowpipestreaming.demo.Main"
Demo-Anwendung ausführen
Führen Sie die Python-Demo aus:
python example.py
Schritt 5: Überprüfen Sie die Daten¶
Nachdem Sie die Demo ausgeführt haben, überprüfen Sie die eingelesenen Daten in Snowflake:
SELECT COUNT(*) FROM MY_DATABASE.MY_SCHEMA.MY_TABLE;
SELECT * FROM MY_DATABASE.MY_SCHEMA.MY_TABLE LIMIT 10;