Apache Iceberg™-Tabellen automatisch aktualisieren¶
Konfigurieren Sie die automatische Aktualisierung von Metadaten für neue oder bestehende, extern verwaltete Apache Iceberg™-Tabellen. Mit automatischen Aktualisierungen fragt Snowflake Ihren externen Iceberg-Katalog kontinuierlich und serverlos ab, um die Metadaten mit den neuesten Remote-Änderungen zu synchronisieren.
Die automatische Aktualisierung wird für Tabellen unterstützt, die die folgenden externen Katalogoptionen verwenden:
AWS Glue
REST-Katalog, der mit der Apache Iceberg REST OpenAPI-Spezifikation konform ist
Snowflake Open Catalog
Aktualisierungsintervall für eine Katalogintegration festlegen¶
Wenn Sie den Befehl CREATE CATALOG INTEGRATION ausführen, können Sie einen Wert für den Parameter REFRESH_INTERVAL_SECONDS
angeben. Andernfalls beträgt das standardmäßige Aktualisierungsintervall 30 Sekunden. Snowflake fragt den externen Katalog nur ab, wenn Iceberg-Tabellen mit der Katalogintegration definiert sind.
Das folgende Beispiel erstellt eine Katalogintegration für AWS Glue und legt ein Aktualisierungsintervall von 60 Sekunden fest:
CREATE CATALOG INTEGRATION auto_refresh_catalog_integration
CATALOG_SOURCE = GLUE
CATALOG_NAMESPACE = 'my_catalog_namespace'
TABLE_FORMAT = ICEBERG
GLUE_AWS_ROLE_ARN = 'arn:aws:iam::123456789123:role/my-catalog-role'
GLUE_CATALOG_ID = '123456789123'
ENABLED = TRUE
REFRESH_INTERVAL_SECONDS = 60;
Um das Aktualisierungsintervall für eine Katalogintegration zu aktualisieren, verwenden Sie den Befehl ALTER CATALOG INTEGRATION.
Beispiel:
ALTER CATALOG INTEGRATION auto_refresh_catalog_integration SET REFRESH_INTERVAL_SECONDS = 120;
Iceberg-Tabelle mit automatischer Aktualisierung erstellen¶
Erstellen Sie eine Iceberg-Tabelle mit dem Befehl CREATE ICEBERG TABLE. Um festzulegen, dass die Tabelle automatisches Aktualisierung von Metadaten verwenden soll, setzen Sie AUTO_REFRESH = TRUE
.
Im folgenden Beispiel wird eine Iceberg-Tabelle erstellt, die AWS Glue als Katalog verwendet, wobei die zuvor erstellte Katalogintegration (auto_refresh_catalog_integration
) und die CATALOG_TABLE_NAME von AWS Glue angegeben werden.
CREATE OR REPLACE ICEBERG TABLE auto_refresh_iceberg_table
CATALOG_TABLE_NAME = 'myGlueTable'
CATALOG = 'auto_refresh_catalog_integration'
AUTO_REFRESH = TRUE;
Automatische Aktualisierung aktivieren oder deaktivieren¶
Bemerkung
Wenn die Tabelle eine Katalogintegration verwendet, die vor Snowflake Version 8.22 erstellt wurde, müssen Sie den Befehl ALTER CATALOG INTEGRATION verwenden, um den Parameter
REFRESH_INTERVAL_SECONDS
festzulegen, bevor Sie die automatische Aktualisierung für die Tabelle aktivieren.Das häufige Ein- und Ausschalten der automatischen Aktualisierung für eine Iceberg-Tabelle kann die Aktualisierung der Metadaten für diese Tabelle verlangsamen.
Verwenden Sie den Befehl ALTER ICEBERG TABLE, um die automatische Aktualisierung für eine bestehende Iceberg-Tabelle zu aktivieren oder zu deaktivieren.
Beispiel:
ALTER ICEBERG TABLE my_iceberg_table SET AUTO_REFRESH = FALSE;
Status der automatischen Aktualisierung abrufen¶
Um den Status der automatischen Aktualisierung für eine Tabelle abzurufen, rufen Sie die Funktion SYSTEM$AUTO_REFRESH_STATUS auf.
SELECT SYSTEM$AUTO_REFRESH_STATUS('my_iceberg_table');
Die Funktion gibt Details über die Pipe zurück, die Snowflake verwendet, um Aktualisierungen für die Tabelle zu automatisieren, z. B. den Ausführungsstatus und die Größe der Snapshot-Warteschlange. Der Ausführungsstatus RUNNING
zeigt an, dass die automatische Aktualisierung wie erwartet läuft. Weitere Informationen dazu finden Sie unter SYSTEM$AUTO_REFRESH_STATUS.
Fehlerbehebung¶
Wenn während des automatischen Aktualisierungsprozesses ein Fehler auftritt, aktualisiert Snowflake den Status der Ausführung auf einen der folgenden Werte:
STALLED
bedeutet, dass Snowflake versucht, den Fehler zu beheben. Wenn die Wiederherstellung erfolgreich ist, läuft der automatische Aktualisierungsprozess wie Automatische Aktualisierung erwartet weiter und der Zustand der Ausführung wechselt zurück in den gesunden ZustandRUNNING
.STOPPED
bedeutet, dass der automatische Aktualisierungsprozess auf einen nicht behebbaren Fehler gestoßen ist und die automatische Aktualisierung der Tabelle gestoppt wurde.Ein nicht behebbarer Fehler kann z. B. auftreten, wenn Snowflake keine direkte Verbindung zwischen dem Ziel-Snapshot und dem aktuellen Snapshot herstellen kann.
Um den Zustand
STOPPED
wiederherzustellen, führen Sie die folgenden Aktionen aus:Schalten Sie die automatische Aktualisierung für die Tabelle aus.
Führen Sie eine manuelle Metadatenaktualisierung durch. Eine Anleitung dazu finden Sie unter Tabellen-Metadaten aktualisieren.
Aktivieren Sie die automatische Aktualisierung mit der Anweisung ALTER ICEBERG TABLE … SET AUTO_REFRESH erneut.
Überprüfen Sie, ob sich die automatische Aktualisierung im Status
RUNNING
befindet, indem Sie die Funktion SYSTEM$AUTO_REFRESH_STATUS aufrufen. Sie können die Funktion auch mehrmals aufrufen, um festzustellen, dass die Anzahl der Snapshots in der Warteschlange (pendingSnapshotCount
) allmählich abnimmt.
Rechnungsstellung¶
Snowflake verwendet Snowpipe, um Aktualisierungen für Iceberg-Tabellen zu automatisieren, sodass die Gebühren für die automatische Aktualisierung in derselben Zeile Ihrer Abrechnung erscheinen wie die Snowpipe-Gebühren. Für dieses Feature fallen keine Gebühren für die Snowpipe-Datei an.
Sie können die anfallenden Kosten abschätzen, indem Sie die Account Usage Ansicht PIPE_USAGE_HISTORY prüfen. Automatisierte Aktualisierungspipelines werden unter einem NULL-Pipenamen aufgeführt.
Weitere Informationen zu den Gebühren für Iceberg-Tabellen finden Sie unter Abrechnung von Iceberg-Tabellen.
Hinweise und Einschränkungen¶
Beachten Sie Folgendes, wenn Sie mit Iceberg-Tabellen arbeiten, die eine automatische Aktualisierung verwenden:
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.