High-Performance-Architektur von Snowpipe Streaming mit Apache Iceberg™-Tabellen

Snowpipe Streaming mit High-Performance-Architektur unterstützt die Aufnahme von Daten in von Snowflake verwaltete Apache Iceberg-Tabellen, einschließlich Iceberg-Tabellen der Version 2 und Iceberg-Tabellen der Version 3. Dies ermöglicht nahezu Echtzeit-Streaming von Daten in Iceberg-Tabellen mit allen Leistungsvorteilen High-Performance-Architektur.

Bemerkung

Die klassische Architektur unterstützt nur Iceberg-Tabellen der Version 2. Wenn Sie Unterstützung für Iceberg-Tabellen der Version 3 benötigen, müssen Sie die High-Performance-Architektur verwenden. Weitere Informationen zur Iceberg-Unterstützung in der klassischen Architektur finden Sie unter Klassisches Snowpipe Streaming mit Apache Iceberg™-Tabellen.

Wie es funktioniert

Snowpipe Streaming nimmt Daten über das PIPE-Objekt in Ihre Iceberg-Zieltabelle auf. Snowflake erstellt Iceberg-kompatible Apache Parquet-Datendateien mit entsprechenden Iceberg-Metadaten und lädt sie in den von Ihnen konfigurierten externen Cloudspeicherort hoch. Die Daten werden als von Snowflake verwaltete Iceberg-Tabelle zur Verfügung gestellt, die bei Snowflake als Iceberg-Katalog registriert ist.

Snowflake stellt eine Verbindung zu Ihrem Speicherort über ein externes Volume her.

Erste Schritte

Dieser Abschnitt enthält ein schrittweises Beispiel für die Einrichtung von Snowpipe Streaming mit High-Performance-Architektur für die Aufnahme von Daten in eine Iceberg-Tabelle.

Schritt 1: Externes Volume erstellen

Erstellen Sie ein externes Volume, das einen Speicherort für Ihre Iceberg-Tabellendaten angibt.

Streaming-Rolle die USAGE-Berechtigung für das externe Volume gewähren:

GRANT USAGE ON EXTERNAL VOLUME my_external_volume TO ROLE my_streaming_role;

Schritt 2: Eine von Snowflake verwaltete Iceberg-Tabelle erstellen

Erstellen Sie eine von Snowflake-verwaltete Iceberg-Tabelle mit Ihrem konfigurierten externen Volume:

CREATE OR REPLACE ICEBERG TABLE my_iceberg_table (
    event_id NUMBER,
    event_type STRING,
    event_data VARIANT,
    event_timestamp TIMESTAMP_NTZ
)
    CATALOG = 'SNOWFLAKE'
    EXTERNAL_VOLUME = 'my_external_volume'
    BASE_LOCATION = 'my_iceberg_table/'
    ICEBERG_VERSION = 3;

Bemerkung

Wenn Sie den ICEBERG_VERSION-Parameter weglassen, ist die Standardeinstellung der Tabelle Iceberg v2.

Schritt 3: Eine Pipe für die Datenaufnahme erstellen

Erstellen Sie eine Pipe, die auf die Iceberg-Tabelle abzielt. Sie können die Standard-Pipe (automatisch erstellt) verwenden oder eine kundenspezifische Pipe erstellen:

-- Option 1: Use the default pipe.
-- The default pipe is automatically created when you open a channel
-- against the table using the SDK. The default pipe name follows the
-- convention: <TABLE_NAME>-STREAMING (for example, MY_ICEBERG_TABLE-STREAMING).

-- Option 2: Create a custom pipe with explicit column mapping.
CREATE OR REPLACE PIPE my_iceberg_pipe AS
    COPY INTO my_iceberg_table (event_id, event_type, event_data, event_timestamp)
    FROM (SELECT $1:event_id, $1:event_type, $1:event_data, $1:event_timestamp);

Schritt 4: Daten mit dem SDK streamen

Konfigurieren Sie das SDK, um Daten über die Pipe in Ihre Iceberg-Tabelle zu streamen. Verwenden Sie die gleiche SDK-Einrichtung wie unter Tutorial: Erste Schritte mit der leistungsstarken Snowpipe Streaming-Architektur SDK beschrieben. Geben Sie dabei die Pipe Ihrer Iceberg-Tabelle in der Clientkonfiguration an.

Unterstützte Iceberg-Versionen

Die High-Performance-Architektur unterstützt sowohl Iceberg-Tabellen der Version 2 als auch Iceberg-Tabellen der Version 3.

Die klassische Architektur unterstützt nur Iceberg-Tabellen der Version 2.

Unterstützte Datentypen

Das Snowflake Ingest SDK unterstützt die meisten der Iceberg-Datentypen, die auch Snowflake derzeit unterstützt. Weitere Informationen dazu finden Sie unter Datentypen für Apache Iceberg™-Tabellen.

Das SDK unterstützt auch die Aufnahme in die drei :doc:` strukturierten Datentypen </sql-reference/data-types-structured>`: Strukturierte ARRAY-Typen, strukturierte OBJECT-Typen und strukturierte MAP-Typen.

Nutzungshinweise

Einschränkungen

Die folgenden Einschränkungen gelten für Snowpipe Streaming mit High-Performance -Architektur und Iceberg-Tabellen:

  • Partitionierte Iceberg-Tabellen werden nicht unterstützt.

  • Die Schemaentwicklung wird für Iceberg-Tabellen nicht unterstützt.

  • Längenbeschränkte VARCHAR-Spalten (z. B. VARCHAR(100)) werden für Iceberg-Tabellen nicht unterstützt. Verwenden Sie STRING oderVARCHAR ohne Längenbeschränkung.

Die Beschränkungen der High-Performance-Architektur von Snowpipe Streaming und Einschränkungen für Iceberg-Tabellen gelten ebenfalls.