Apache Iceberg™-Tabellen¶
Apache Iceberg™-Tabellen für Snowflake kombinieren die Leistung und Abfrage-Semantik typischer Snowflake-Tabellen mit externem Cloud-Speicher, den Sie verwalten. Sie sind ideal für bestehende Data Lakes, die Sie nicht in Snowflake speichern können oder möchten.
Iceberg-Tabellen verwenden die Apache Iceberg™ Spezifikation für offene Tabellenformate, die eine Abstraktionsschicht für in offenen Formaten gespeicherte Datendateien bietet und Features wie:
ACID-Transaktionen (Atomarität, Konsistenz, Isolation, Dauerhaftigkeit)
Schemaentwicklung
Verdeckte Partitionierung
Tabellen-Snapshots
Snowflake unterstützt Iceberg-Tabellen, die das Dateiformat Apache Parquet™ verwenden.
Erste Schritte¶
Um mit der Verwendung von Iceberg-Tabellen zu beginnen, lesen Sie die Informationen unter Tutorial: Erstellen Sie Ihre erste Apache Iceberg™-Tabelle.
Wie es funktioniert¶
Dieser Abschnitt enthält spezielle Informationen zur Verwendung von Iceberg-Tabellen in Snowflake. Um mehr über die Spezifikation des Iceberg-Tabellenformats zu erfahren, lesen Sie die offizielle Apache Iceberg-Dokumentation und die Iceberg Table Spec.
Datenspeicher¶
Iceberg-Tabellen speichern ihre Daten und Metadaten an einem externen Cloudspeicherort (Amazon S3, Google Cloud Storage oder Azure Storage). Der externe Speicher ist nicht Teil von Snowflake. Sie sind für die gesamte Verwaltung des externen Cloudspeicherortes selbst verantwortlich. Snowflake bietet keinen Fail-safe-Speicher für Iceberg-Tabellen.
Snowflake stellt die Konnektivität zu Ihrem Speicherort über ein externes Volume her, sodass für Iceberg-Tabellen keine Snowflake-Speicherkosten anfallen. Weitere Informationen dazu finden Sie unter Rechnungsstellung.
Weitere Informationen zum Speichern von Iceberg-Tabellen finden Sie unter Speicher für Apache Iceberg™-Tabellen.
Externes Volume¶
Ein externes Volume ist ein benanntes Snowflake-Objekt auf Kontoebene, das Sie verwenden, um Snowflake mit Ihrem externen Cloudspeicher für Iceberg-Tabellen zu verbinden. Ein externes Volume speichert eine Identitäts- und Zugriffsverwaltungseinheit (IAM) für Ihren Speicherort. Snowflake verwendet die IAM-Entität, um eine sichere Verbindung zu Ihrem Speicher für den Zugriff auf Tabellendaten, Iceberg-Metadaten und Manifest-Dateien herzustellen, in denen das Tabellenschema, Partitionen und andere Metadaten gespeichert sind.
Ein einzelnes externes Volume kann eine oder mehrere Iceberg-Tabellen unterstützen.
Weitere Informationen zum Einrichten eines externen Volumes für Iceberg-Tabellen finden Sie unter Externes Volume konfigurieren.
Katalog¶
Ein Iceberg-Katalog ermöglicht einem Computemodul das Verwalten und Laden von Iceberg-Tabellen. Der Katalog bildet die erste architektonische Schicht in der Iceberg-Tabellenspezifikation und muss Folgendes unterstützen:
Speichern des aktuellen Metadatenzeigers für eine oder mehrere Iceberg-Tabellen. Ein Metadatenzeiger weist den Namen einer Tabelle dem Speicherort der aktuellen Metadatendatei dieser Tabelle zu.
Ausführen atomarer Operationen, damit Sie den aktuellen Metadatenzeiger einer Tabelle aktualisieren können.
Weitere Informationen zu Iceberg-Katalogen finden Sie in der Apache Iceberg-Dokumentation.
Snowflake unterstützt verschiedene Katalogoptionen. Sie können zum Beispiel Snowflake als Iceberg-Katalog verwenden oder eine Katalogintegration nutzen, um Snowflake mit einem externen Iceberg-Katalog zu verbinden.
Katalogintegration¶
Eine Katalogintegration ist ein benanntes Snowflake-Objekt auf Kontoebene, das Informationen darüber speichert, wie Ihre Metadaten für die folgenden Szenarios organisiert sind:
Wenn Sie nicht Snowflake als Iceberg Katalog verwenden Sie benötigen zum Beispiel eine Katalogintegration, wenn Ihre Tabelle von AWS Glue verwaltet wird.
Wenn Sie eine Integration mit Snowflake Open Catalog vornehmen möchten:
Abfrage einer Iceberg-Tabelle in Snowflake Open Catalog mit Snowflake.
Synchronisieren Sie eine von Snowflake verwaltete Iceberg-Tabelle mit Snowflake Open Catalog, sodass Computemodule von Drittanbietern die Tabelle abfragen können.
Eine einzelne Katalogintegration kann eine oder mehrere Iceberg-Tabellen unterstützen, die denselben externen Katalog verwenden.
Weitere Informationen zum Einrichten einer Katalogintegration finden Sie unter Eine Katalogintegration konfigurieren.
Metadaten und Snapshots¶
Iceberg verwendet ein Snapshot-basiertes Abfragemodell, bei dem Datendateien mithilfe von Manifest- und Metadatendateien zugeordnet werden. Ein Snapshot stellt den Zustand einer Tabelle zu einem bestimmten Zeitpunkt dar und wird für den Zugriff auf den gesamten Satz von Datendateien in der Tabelle verwendet.
Informationen zu Metadaten für Tabellen und zur Unterstützung von Time Travel finden Sie unter Metadaten und Speicher für Apache Iceberg™-Tabellen.
Cloud-/regionsübergreifende Unterstützung¶
Die Cloud-/regionsübergreifende Unterstützung hängt vom Typ der Iceberg-Tabelle ab.
Tabellentyp |
Cloud-/regionsübergreifende Unterstützung |
Anmerkungen |
---|---|---|
Tabellen, die einen externen Katalog mit einer Katalogintegration verwenden |
✔ |
Wenn sich der aktive Speicherort Ihres externen Volumes bei einem anderen Cloudanbieter oder in einer anderen Region befindet wie Ihr Snowflake-Konto, gelten die folgenden Einschränkungen:
Wenn sich Ihr Snowflake-Konto und Ihr externes Volume in unterschiedlichen Regionen befinden, fallen für Ihr externes Cloudspeicherkonto bei Abfragen der Tabelle Kosten für ausgehende Daten an. |
Tabellen, die Snowflake als Iceberg-Katalog verwenden |
❌ |
Ihr externes Volume muss einen aktiven Speicherort bei demselben Cloudanbieter (in derselben Region) verwenden, der Ihr Snowflake-Konto hostet. Wenn sich kein aktiver Speicherort in der gleichen Region befindet, gibt die CREATE ICEBERG TABLE-Anweisung einen Benutzerfehler zurück. |
Rechnungsstellung¶
Snowflake stellt Ihrem Konto die Computenutzung des virtuellen Warehouses und die Clouddienste in Rechnung, wenn Sie mit Iceberg-Tabellen arbeiten. Snowflake rechnet Ihr Konto auch ab, wenn Sie automatisierte Aktualisierung verwenden.
Folgendes berechnet Snowflake Ihrem Konto nicht:
Kosten für die Speicherung der Iceberg-Tabellen. Ihr Cloudspeicheranbieter stellt Ihnen die Nutzung des Datenspeichers direkt in Rechnung.
Von Iceberg-Tabellen verwendete aktive Bytes. Die Ansichten INFORMATION_SCHEMA.TABLE_STORAGE_METRICS und ACCOUNT_USAGE.TABLE_STORAGE_METRICS zeigen ACTIVE_BYTES für Iceberg-Tabellen an, damit Sie verfolgen können, wie viel Speicherplatz eine Tabelle belegt. Ein Beispiel dazu finden Sie unter Speichermetriken abrufen.
Bemerkung
Wenn sich Ihr Snowflake-Konto und Ihr externes Volume in unterschiedlichen Regionen befinden, fallen für Ihr externes Cloudspeicherkonto bei Abfragen der Tabelle Kosten für ausgehende Daten an.
Katalogoptionen¶
Snowflake unterstützt die folgenden Iceberg-Katalogoptionen:
Snowflake als Iceberg-Katalog verwenden
Verwenden Sie einen externen Iceberg-Katalog
In der folgenden Tabelle sind die Unterschiede zwischen diesen Katalogoptionen zusammengefasst.
Lesezugriff |
✔ |
✔ |
Schreibzugriff |
✔ |
❌ Um die Snowflake-Plattform zu unterstützen, können Sie die Tabelle so konvertieren, dass sie Snowflake als Katalog verwendet. |
Daten- und Metadatenspeicher |
Externes Volume (Cloudspeicher) |
Externes Volume (Cloudspeicher) |
Unterstützung der Snowflake-Plattform |
✔ |
❌ |
Integriert mit Snowflake Open Catalog |
✔ Sie können eine von Snowflake verwaltete Tabelle mit Open Catalog synchronisieren, um eine Tabelle mit anderen Compute Engines abzufragen. |
✔ Sie können Snowflake verwenden, um Iceberg-Tabellen abzufragen, die von Open Catalog verwaltet werden. |
Arbeitet mit dem Snowflake-Katalog SDK |
✔ |
✔ |
Snowflake als Katalog verwenden¶
Eine Iceberg-Tabelle, die Snowflake als Iceberg-Katalog verwendet, bietet volle Snowflake-Plattformunterstützung mit Lese- und Schreibzugriff. Die Tabellendaten und die Metadaten werden in einem externen Cloudspeicher gespeichert, auf den Snowflake über ein externes Volume zugreift. Snowflake übernimmt die gesamte Lebenszykluswartung der Tabelle, wie z. B. die Komprimierung.
Externen Katalog verwenden¶
Eine Iceberg-Tabelle, die eine Katalogintegration verwendet, bietet eingeschränkte Snowflake-Plattformunterstützung mit Nur-Lese-Zugriff. Bei diesem Tabellentyp verwendet Snowflake die Katalogintegration, um Informationen zu Ihren Iceberg-Metadaten und Ihrem Iceberg-Schema abzurufen.
Mit dieser Option können Sie eine Iceberg-Tabelle für die folgenden Quellen erstellen:
AWS Glue-Datenkatalog
Iceberg-Metadatendateien in Objektspeichern
Delta-Tabellendateien in Objektspeichern
Open Catalog
Remote-Iceberg-REST-Katalog
Snowflake übernimmt keine Lebenszyklusverwaltung für die Tabelle.
Die Tabellendaten und die Metadaten werden in einem externen Cloudspeicher gespeichert, auf den Snowflake über ein externes Volume zugreift.
Die folgende Abbildung zeigt, wie eine Iceberg-Tabelle eine Katalogintegration mit einem externen Iceberg-Katalog verwendet.
Hinweise und Einschränkungen¶
Die folgenden Hinweise und Einschränkungen gelten für Iceberg-Tabellen; Änderungen vorbehalten:
Clouds und Regionen
Iceberg-Tabellen sind für alle Snowflake-Konten, auf allen Cloud-Plattformen und in allen Regionen außer in der Region China verfügbar.
Cloud-/regionsübergreifende Tabellen werden nur unterstützt, wenn Sie einen externen Katalog verwenden. Weitere Informationen dazu finden Sie unter Cloud-/regionsübergreifende Unterstützung.
Iceberg
Version 1 und 2 der Apache-Iceberg-Spezifikation werden unterstützt, mit Ausnahme der folgenden Features:
Löschungen auf Zeilenebene (entweder Positionslöschungen oder Gleichheitslöschungen) Allerdings unterstützen Tabellen, die Snowflake als Katalog verwenden, Snowflake DELETE-Anweisungen.
Verwendung der
history.expire.min-snapshots-to-keep
-Tabelleneigenschaft zur Angabe der standardmäßigen Mindestanzahl der aufzubewahrenden Snapshots. Weitere Informationen dazu finden Sie unter Metadaten und Snapshots.Die Iceberg-Partitionierung mit der Transformationsfunktion
bucket
wirkt sich auf die Leistung von Abfragen aus, die bedingte Klauseln zum Filtern von Ergebnissen verwenden.Bei Iceberg-Tabellen, die nicht von Snowflake verwaltet werden, sollten Sie Folgendes beachten:
Time Travel wird für jeden Snapshot unterstützt, der nach der Tabellenerstellung generiert wurde, solange Sie die Tabelle regelmäßig und vor Ablaufen des Snapshots aktualisieren.
Das Konvertieren einer Tabelle, die eine nicht materialisierte Identitätspartitionsspalte enthält, wird nicht unterstützt. Eine nicht materialisierte Identitätspartitionsspalte wird erstellt, wenn eine Tabelle eine Identitätstransformation unter Verwendung einer Quellspalte definiert, die nicht in einer Parquet-Datei existiert.
Dateiformate
Iceberg-Tabellen unterstützen Apache Parquet-Dateien.
Parquet-Dateien, die den logischen Typ der vorzeichenlosen Ganzzahl verwenden, werden nicht unterstützt.
Externe Volumes
Sie können nicht über eine Speicherintegration auf die Cloudspeicherorte in externen Volumes zugreifen.
Sie müssen für jedes externe Volume, das Sie erstellen, eine separat eine Vertrauensstellung konfigurieren.
Metadatendateien
Die Metadatendateien identifizieren nicht den jüngsten Snapshot einer Iceberg-Tabelle.
Sie können den Speicherort der Datendateien oder des Snapshots nicht mit dem Befehl ALTER ICEBERG TABLE ändern. Um eine dieser Einstellungen zu ändern, müssen Sie die Tabelle neu erstellen (unter Verwendung der Syntax CREATE OR REPLACE ICEBERG TABLE).
Für Tabellen, die einen externen Katalog verwenden:
Stellen Sie sicher, dass die Manifestdateien keine Duplikate enthalten. Wenn doppelte Dateien im gleichen Snapshot vorhanden sind, gibt Snowflake einen Fehler zurück, der den Pfad der doppelten Datei enthält.
Sie können keine Tabelle erstellen, wenn die Parquet Metadaten ungültige UTF-8-Zeichen enthalten. Stellen Sie sicher, dass Ihre Parquet Metadaten mit UTF-8 übereinstimmen.
Snowflake erkennt Beschädigungen und Inkonsistenzen in Parquet-Metadaten, die außerhalb von Snowflake erzeugt wurden, und zeigt Probleme durch Fehlermeldungen an.
Es ist möglich, extern verwaltete (oder konvertierte) Tabellen zu erstellen, zu aktualisieren oder abzufragen, selbst wenn die Metadaten der Tabelle inkonsistent sind. Stellen Sie beim Schreiben von Iceberg-Daten sicher, dass die Metadaten-Statistiken der Tabelle (z. B.
RowCount
oderNullCount
) mit dem Dateninhalt übereinstimmen.Bei Tabellen, die Snowflake als Katalog verwenden, verarbeitet Snowflake DDL-Anweisungen einzeln und erzeugt Metadaten auf eine Weise, die sich von anderen Katalogen unterscheiden kann. Weitere Informationen dazu finden Sie unter DDL-Anweisungen.
Clustering
Die Unterstützung für Clustering hängt vom Typ der Iceberg-Tabelle ab.
Tabellentyp
Anmerkungen
Tabellen, die Snowflake als Iceberg-Katalog verwenden
Legen Sie einen Gruppierungsschlüssel fest, indem Sie entweder den Befehl CREATE ICEBERG TABLE oder den Befehl ALTER ICEBERG TABLE verwenden. Weitere Informationen zum Festlegen oder Verwalten eines Gruppierungsschlüssels finden Sie unter CREATE ICEBERG TABLE (Snowflake als Iceberg-Katalog) und ALTER ICEBERG TABLE.
Tabellen, die einen externen Katalog verwenden
Clustering wird nicht unterstützt.
Konvertierte Tabellen
Snowflake clustert Dateien nur, wenn sie nach der Konvertierung der Tabelle erstellt wurden oder wenn die Dateien seitdem mit einer DML-Anweisung geändert wurden.
Delta
Snowflake-Streams werden für Iceberg-Tabellen, die aus Delta-Tabellen-Dateien mit Partitionsspalten erstellt wurden, nicht unterstützt. Allerdings werden Nur-Einfügen-Streams für Tabellen, die aus Delta-Dateien ohne Partitionsspalten erstellt wurden, unterstützt.
Dynamische Tabellen werden bei Iceberg-Tabellen, die aus Delta-Tabellendateien erstellt wurden, nicht unterstützt.
Snowflake unterstützt die Erstellung von Iceberg-Tabellen aus Delta-Tabellendefinitionen im AWS Glue Data-Katalog nicht.
Parquet-Dateien (Datendateien für Delta-Tabellen), die eines der folgenden Features oder Datentypen verwenden, werden nicht unterstützt:
Feld-IDs
Der Datentyp INTERVAL.
Der Datentyp DECIMAL mit einer Präzision von mehr als 38.
LIST oder MAP-Typen mit ein- oder zweistufiger Darstellung.
Ganzzahl-Typen ohne Vorzeichen (INT(vorzeichenbehaftet = falsch)).
Der Datentyp FLOAT16.
Weitere Informationen zu Delta-Datentypen und Iceberg-Tabellen finden Sie unter Delta-Datentypen.
Aktualisierungsoperationen während CREATE und ALTER … REFRESH können maximal 1.000 Delta-Commit-Dateien pro Operation verarbeiten.
Bemerkung
Snowflake verwendet bei der Erstellung einer Iceberg-Tabelle Delta-Checkpoint-Dateien. Die Beschränkung auf 1.000 Commit-Dateien gilt nur für Commits nach dem letzten Prüfpunkt.
Die Erzeugung von Iceberg-Metadaten mit der Funktion SYSTEM$GET_ICEBERG_TABLE_INFORMATION wird nicht unterstützt.
Die folgenden Funktionen von Delta Lake werden derzeit nicht unterstützt: Zeilenverfolgung, Löschvektordateien, Ändern von Datendateien, Ändern von Metadaten, DataChange, CDC, Protokollentwicklung.
Automatische Aktualisierung
Wenn die automatische Aktualisierung aktiviert ist, können Sie die Tabellenmetadaten nicht manuell aktualisieren. Um eine manuelle Aktualisierung durchzuführen, schalten Sie zunächst die automatische Aktualisierung aus.
Für Katalogintegrationen, die vor Snowflake Version 8.22 erstellt wurden, müssen Sie den Parameter
REFRESH_INTERVAL_SECONDS
manuell festlegen, bevor Sie die automatische Aktualisierung von Tabellen aktivieren, die von dieser Katalogintegration abhängen. Anweisungen dazu finden Sie unter ALTER CATALOG INTEGRATION … SET AUTO_REFRESH.Stellen Sie sicher, dass der neue Tabellen-Snapshot dem aktuellen Tabellen-Snapshots direkt untergeordnet ist. Andernfalls wechselt die automatische Aktualisierung in den Zustand
STOPPED
. Wie Sie die automatische Aktualisierung in diesem Fall wiederherstellen können, erfahren Sie unter Fehlerbehebung.
Wenn Ihre Tabelle leer ist, führen Sie eine manuelle Aktualisierung durch, bevor Sie die automatische Aktualisierung aktivieren, um undefinierte Verhaltensweisen zu vermeiden.
Die automatische Aktualisierung wird nicht unterstützt, wenn Sie eine Katalogintegration für Objektspeicher verwenden.
Manifeste der Iceberg-Version 1, die keine Spalte mit einer Sequenznummer enthalten, werden derzeit nicht unterstützt.
Zugriff von Drittkunden auf Iceberg-Daten, Metadaten
Clients von Drittanbietern können keine Daten an Iceberg-Tabellen anhängen, in Iceberg-Tabellen löschen oder Daten per Upsert einfügen, wenn die Iceberg-Tabellen Snowflake als Katalog verwenden.
Nicht unterstützte Features
Die folgenden Snowflake-Features werden derzeit nicht für alle Iceberg Tabellen unterstützt:
Die folgenden Treiber:
Freigabeangebote, die Cloud-übergreifende automatische Ausführung ermöglichen.
Replikation von Iceberg-Tabellen, externen Volumes oder Katalogintegrationen
Snowflake-Verschlüsselung
Snowflake Connector für Kafka Connector mit Snowpipe Streaming
Snowflake Ingest-SDK
Snowpipe Streaming API
Tagging mit der gespeicherten Prozedur ASSOCIATE_SEMANTIC_CATEGORY_TAGS
Die folgenden Features werden für Iceberg-Tabellen, die einen externen Katalog verwenden, nicht unterstützt:
Standard- und reine Nur-Anfügen-Streams Nur Nur-Einfügen-Streams werden unterstützt.