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. Sie benötigen einen Benutzer mit ausreichenden Berechtigungen (z. B. ACCOUNTADMIN oder USERADMIN für die Ersteinrichtung), um den dedizierten Benutzer und die kundenspezifische Rolle zu erstellen, die unter Schritt 1: Konfigurieren Sie Snowflake-Objekte beschrieben sind.

  • 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.

  • Java-Entwicklungsumgebung Installieren Sie Java 11 oder höher und Maven für die Verwaltung von Abhängigkeiten.

  • Python: Erfordert Python Version 3.9 oder höher.

  • Snowpipe Streaming SDKs und der Beispielcode: Holen Sie sich das Java-SDK oder Python-SDK, und laden Sie den Beispielcode für Ihre bevorzugte Sprache in Schritt 3: Richten Sie das Demoprojekt ein 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
Copy
PUBK=$(cat ./rsa_key.pub | grep -v KEY- | tr -d '\012')
echo "ALTER USER MY_USER SET RSA_PUBLIC_KEY='$PUBK';"
Copy

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

Run the following SQL commands in your Snowflake account (for example, using Snowsight or SnowSQL). Note that you will need a role with permissions to create users, roles, and databases (e.g., ACCOUNTADMIN or USERADMIN for the first few lines, and then switching to the new role). Replace placeholders like MY_USER, MY_ROLE, MY_DATABASE, etc., with your desired names.

-- 1. Create a dedicated role and user (Run with a highly-privileged role)
CREATE OR REPLACE USER MY_USER;
CREATE ROLE IF NOT EXISTS MY_ROLE;
GRANT ROLE MY_ROLE TO USER MY_USER;

-- 2. Set the public key for key-pair authentication
-- NOTE: Replace 'YOUR_FORMATTED_PUBLIC_KEY' with the output of the PUBK variable from the key generation step.
ALTER USER MY_USER SET RSA_PUBLIC_KEY='YOUR_FORMATTED_PUBLIC_KEY';

-- 3. Set the default role (Recommended)
ALTER USER MY_USER SET DEFAULT_ROLE=MY_ROLE;

-- 4. Switch to the new role and create objects
USE ROLE MY_ROLE;
-- NOTE: You may also need to run USE WAREHOUSE YOUR_WH; here if a default warehouse isn't set.

-- Create database and schema
CREATE OR REPLACE DATABASE MY_DATABASE;
CREATE OR REPLACE SCHEMA MY_SCHEMA;

-- Create a 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')));


-- 5. Configure authentication policy (Optional, but recommended for explicit control)
CREATE OR REPLACE AUTHENTICATION POLICY testing_auth_policy
  AUTHENTICATION_METHODS = ('KEYPAIR')
  CLIENT_TYPES = ('DRIVERS');

-- Apply authentication policy (if created)
ALTER USER MY_USER SET AUTHENTICATION POLICY testing_auth_policy;
Copy

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 profile.json-Datei im Verzeichnis Ihres Demo-Projekts.

profile.json-Vorlage

{
    "user": "MY_USER",
    "account": "your_account_identifier",
    "url": "https://your_account_identifier.snowflakecomputing.com:443",
    "private_key_file": "rsa_key.p8",
    "role": "MY_ROLE"
}
Copy

Ersetzen Sie die Platzhalter:

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

Wichtig

Ersetzen Sie YOUR_SDK_VERSION durch die spezifische Version, die unter Maven Central verfügbar ist.

Laden Sie den Java-Beispielcode herunter.

Platzieren Sie die Profildatei

Stellen Sie sicher, dass sich die profile.json-Datei, die Sie in Schritt 2: Konfigurieren Sie ein Authentifizierungsprofil 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
    
    Copy
  • Führen Sie die Hauptklasse aus:

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

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