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;
Copy

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;
Copy

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;
Copy

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;
Copy

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');
Copy

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 Zustand RUNNING.

  • 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:

    1. Schalten Sie die automatische Aktualisierung für die Tabelle aus.

    2. Führen Sie eine manuelle Metadatenaktualisierung durch. Eine Anleitung dazu finden Sie unter Tabellen-Metadaten aktualisieren.

    3. Aktivieren Sie die automatische Aktualisierung mit der Anweisung ALTER ICEBERG TABLE … SET AUTO_REFRESH erneut.

    4. Ü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.

  • 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.