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 and the sample code: Obtain the Java SDK or Python SDK and download the sample code for your preferred language from the Snowpipe Streaming SDK examples in the GitHub repository.

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 Snowflake CLI). Note that you will need a role with permissions to create users, roles, and databases (such as ACCOUNTADMIN or USERADMIN for the first few lines, and then switching to the new role). Replace placeholders like MY_USER, MY_ROLE, MY_DATABASE, and so on, 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

Download: Sample Java code

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.

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