Einführung in Snowpipe

Snowpipe ermöglicht das Laden von Daten aus Dateien, sobald diese in einem Stagingbereich verfügbar sind. Das bedeutet, dass Sie Daten aus Dateien in Microbatches laden und sie den Benutzern innerhalb von Minuten zur Verfügung stellen können, anstatt COPY-Anweisungen manuell nach einem Zeitplan auszuführen, um größere Batches zu laden.

Unter diesem Thema:

So funktioniert Snowpipe

Snowpipe lädt Daten aus Dateien, sobald sie in einem Stagingbereich verfügbar sind. Die Daten werden gemäß der in einer referenzierten Pipe definierten COPY-Anweisung geladen.

Eine Pipe ist ein benanntes First-Class-Objekt von Snowflake, das eine COPY-Anweisung enthält, die von Snowpipe verwendet wird. Die COPY-Anweisung identifiziert den Quellort der Datendateien (d. h. einen Stagingbereich) und eine Zieltabelle. Es werden alle Datentypen unterstützt, einschließlich semistrukturierter Datentypen wie JSON und Avro.

Es gibt verschiedene Mechanismen zum Erkennen der verfügbaren Stagingdateien:

Automatisieren von Snowpipe mithilfe von Cloudmessaging

Beim automatischen Laden von Daten werden für Cloudspeicher Ereignisbenachrichtigungen verwendet, um Snowpipe über das Eintreffen neuer zu ladender Datendateien zu informieren. Snowpipe kopiert die Dateien in eine Warteschlange, aus der sie auf Grundlage der in einem angegebenen Pipeobjekt definierten Parameter kontinuierlich und ohne Server in die Zieltabelle geladen werden.

Snowflake unterstützt derzeit die folgenden Speicherkontotypen:

  • Amazon Web Services (AWS)

    • Amazon S3

  • Microsoft Azure

    • Blob-Speicher

    • Data Lake Storage Gen2 – Unterstützt als Vorschaufunktion.

    • General Purpose v2

Weitere Informationen dazu finden Sie unter Automatisieren des kontinuierlichen Ladens von Daten mithilfe von Cloudmessaging.

Aufrufen von Snowpipe-REST-Endpunkten

Ihre Clientanwendung ruft einen öffentlichen REST-Endpunkt mit dem Namen eines Pipeobjekts und einer Liste von Datendateinamen auf. Wenn in dem Stagingbereich neue Datendateien gefunden werden, die der Liste entsprechen, werden sie zum Laden in die Warteschlange gestellt. Von Snowflake bereitgestellte Computeressourcen laden basierend auf in der Pipe definierten Parametern Daten aus der Warteschlange in eine Snowflake-Tabelle.

  • Amazon Web Services (AWS)

    • Amazon S3

  • Google Cloud Platform

    • Cloudspeicher

  • Microsoft Azure

    • Blob-Speicher

    • Data Lake Storage Gen2 – Unterstützt als Vorschaufunktion.

    • General Purpose v2

Weitere Informationen dazu finden Sie unter Aufrufen von Snowpipe-REST-Endpunkten zum Laden von Daten.

Wie unterscheidet sich Snowpipe vom Massenladen von Daten?

In diesem Abschnitt werden kurz die wesentlichen Unterschiede zwischen Snowpipe und einem Ladeworkflow für Massenladen mit dem COPY-Befehl beschrieben. Weitere Details sind in der gesamten Snowpipe-Dokumentation enthalten.

Authentifizierung

Laden von Massendaten

Basiert auf den vom Client unterstützten Sicherheitsoptionen zum Authentifizieren und Initiieren einer Benutzersitzung.

Snowpipe

Bei Aufruf der REST-Endpunkte: Erfordert Schlüsselpaar-Authentifizierung mit JSON Web Token (JWT). JWTs werden mit einem Public/Private-Schlüsselpaar mit RSA-Verschlüsselung signiert.

Ladeverlauf

Laden von Massendaten

In den Metadaten für die Zieltabelle 64 Tage lang gespeichert. Verfügbar nach Abschluss der COPY-Anweisung als Ausgabe der Anweisung.

Snowpipe

In den Metadaten für die Pipe 14 Tage lang gespeichert. Muss von Snowflake über einen REST-Endpunkt, eine SQL-Tabellenfunktion oder eine ACCOUNT_USAGE-Ansicht angefordert werden.

Wichtig

Um ein erneutes Laden von Dateien (und das Duplizieren von Daten) zu vermeiden, empfehlen wir, Daten aus einem bestimmten Satz von Dateien mit entweder Massendaten oder Snowpipe zu laden, jedoch nicht mit beiden.

Transaktionen

Laden von Massendaten

Ladevorgänge werden immer in einer einzigen Transaktion ausgeführt. Daten werden zusammen mit anderen SQL-Anweisungen, die von Benutzern manuell übermittelt wurden, in die Tabelle eingefügt.

Snowpipe

Lasten werden basierend auf der Anzahl und Größe der Zeilen in jeder Datendatei kombiniert oder in eine oder mehrere Transaktionen aufgeteilt. Zeilen von teilweise geladenen Dateien (basierend auf der Einstellung der Kopieroption ON_ERROR) können auch kombiniert oder in eine oder mehrere Transaktionen aufgeteilt werden.

Computeressourcen

Laden von Massendaten

Erfordert ein benutzerdefiniertes Warehouse, um COPY-Anweisungen auszuführen.

Snowpipe

Verwendet von Snowflake bereitgestellte Computeressourcen.

Kosten

Laden von Massendaten

Wird für die Zeit berechnet, die jedes virtuelle Warehouse aktiv ist.

Snowpipe

Die Abrechnung erfolgt nach den im Snowpipe-Warehouse verwendeten Computeressourcen beim Laden der Dateien.

Ladereihenfolge der Datendateien

Für jedes Pipe-Objekt erstellt Snowflake eine separate Warteschlange, um Datendateien zu sequenzieren, die auf das Laden warten. Wenn neue Datendateien in einem Stagingbereich erkannt werden, hängt Snowpipe sie an die Warteschlange an. Bei mehreren Prozessen werden jedoch Dateien aus der Warteschlange abgerufen. Während Snowpipe im Allgemeinen ältere Dateien zuerst lädt, gibt es keine Garantie, dass Dateien in derselben Reihenfolge geladen werden, in der sie bereitgestellt wurden.

Datenkopien

Snowflake verwendet Metadaten zum Laden von Dateien, die jedem Pipe-Objekt zugeordnet sind, um das erneute Laden derselben Dateien (und das Duplizieren von Daten) in einer Tabelle zu verhindern. Diese Metadaten speichern den Pfad (d. h. das Präfix) und den Namen jeder geladenen Datei und verhindern, dass Dateien mit demselben Namen geladen werden, auch wenn sie später geändert wurden (d. h. sie haben ein anderes ETag).

Abschätzen der Snowpipe-Latenz

Angesichts der Vielzahl von Faktoren, die Snowpipe-Workloads beeinflussen können, ist es für Snowflake sehr schwierig, die Latenz abzuschätzen. Dateiformate und -größen sowie die Komplexität der COPY-Anweisungen (einschließlich der SELECT-Anweisung, die für Transformationen verwendet wird) wirken sich auf die für das Laden einer Snowpipe erforderliche Zeit aus.

Wir empfehlen, dass Sie experimentieren, indem Sie einen typischen Satz von Workloads ausführen, um die durchschnittliche Latenz abzuschätzen.

Snowpipe-DDL

Um das Erstellen und Verwalten von Pipes zu unterstützen, bietet Snowflake den folgenden Satz von speziellen DDL-Befehlen:

Darüber hinaus können Anbieter den Zugriff auf die für Snowpipe erforderlichen Datenbankobjekte mit der folgenden DDL-Standardzugriffssteuerung anzeigen, gewähren oder widerrufen: