Arbeiten mit Apache Iceberg V3 - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Arbeiten mit Apache Iceberg V3

Apache Iceberg Version 3 (V3) ist die neueste Version der Apache Iceberg-Spezifikation für das Tabellenformat. Sie bietet erweiterte Funktionen für den Aufbau von Data Lakes im Petabyte-Bereich mit verbesserter Leistung und geringerem Betriebsaufwand. V3 behebt häufig auftretende Leistungsengpässe bei V2, insbesondere bei Batch-Updates und Compliance-Löschungen.

AWS bietet Unterstützung für Löschvektoren und Zeilenabstammung, wie sie in der Apache Iceberg Version 3 (V3) -Spezifikation definiert sind. Diese Funktionen sind mit Apache Spark auf Amazon EMR 7.12, AWS Glue ETL, Amazon SageMaker Unified Studio Notebooks und Apache Iceberg-Tabellen in AWS Glue Data Catalog, einschließlich Amazon S3 S3-Tabellen, verfügbar.

Die wichtigsten Funktionen von V3

Löschvektoren

Ersetzt die Positionslöschdateien von V2 durch ein effizientes Binärformat, das als Puffin-Dateien gespeichert ist. Dadurch entfällt der Schreibaufwand durch zufällige Batch-Updates und DSGVO-konforme Löschungen, wodurch der Aufwand für die Pflege aktueller Daten erheblich reduziert wird. Organizations, die hochfrequente Updates verarbeiten, werden durch weniger kleine Dateien sofortige Verbesserungen der Schreibleistung und geringere Speicherkosten feststellen.

Abstammung der Zeilen

Ermöglicht eine präzise Nachverfolgung von Änderungen auf Zeilenebene. Ihre nachgelagerten Systeme können Änderungen inkrementell verarbeiten, wodurch Daten-Pipelines beschleunigt und die Rechenkosten für Workflows zur Erfassung von Änderungsdaten (CDC) gesenkt werden. Diese integrierte Funktion macht benutzerdefinierte Implementierungen zur Änderungsverfolgung überflüssig.

Versionskompatibilität

V3 behält die Abwärtskompatibilität mit V2-Tabellen bei. AWS Dienste unterstützen sowohl V2- als auch V3-Tabellen gleichzeitig, sodass Sie:

  • Abfragen sowohl für V2- als auch für V3-Tabellen ausführen

  • Aktualisieren Sie bestehende V2-Tabellen auf V3, ohne dass Daten neu geschrieben werden müssen

  • Führen Sie Zeitreiseabfragen aus, die sich über V2- und V3-Snapshots erstrecken

  • Verwenden Sie Schemaentwicklung und versteckte Partitionierung für mehrere Tabellenversionen

Wichtig

V3 ist ein unidirektionales Upgrade. Sobald eine Tabelle von V2 auf V3 aktualisiert wurde, kann sie nicht mit Standardoperationen wieder auf V2 herabgestuft werden.

Erste Schritte mit V3

Voraussetzungen

Bevor Sie mit V3-Tabellen arbeiten, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Ein AWS Konto mit entsprechenden IAM-Berechtigungen

  • Zugriff auf einen oder mehrere AWS Analysedienste (EMR, Glue, Amazon SageMaker Unified Studio Notebooks oder S3 Tables)

  • Ein S3-Bucket zum Speichern von Tabellendaten und Metadaten

  • Ein Tabellen-Bucket für den Einstieg in S3-Tabellen oder ein S3-Bucket für allgemeine Zwecke, wenn Sie Ihre eigene Iceberg-Infrastruktur aufbauen

  • AWS Glue-Katalog konfiguriert

V3-Tabellen erstellen

Neue V3-Tabellen erstellen

Um eine neue Iceberg V3-Tabelle zu erstellen, setzen Sie die Tabelleneigenschaft format-version auf 3.

Verwenden von Spark SQL:

CREATE TABLE IF NOT EXISTS myns.orders_v3 ( order_id bigint, customer_id string, order_date date, total_amount decimal(10,2), status string, created_at timestamp ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )

Aktualisierung von V2-Tabellen auf V3

Sie können bestehende V2-Tabellen atomar auf V3 aktualisieren, ohne Daten neu schreiben zu müssen.

Verwenden von Spark SQL:

ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
Wichtig

V3 ist ein unidirektionales Upgrade. Sobald eine Tabelle von V2 auf V3 aktualisiert wurde, kann sie nicht mit Standardoperationen wieder auf V2 herabgestuft werden.

Was passiert während des Upgrades:

  • Ein neuer Metadaten-Snapshot wird atomar erstellt

  • Bestehende Parquet-Datendateien werden wiederverwendet

  • Row-Lineage-Felder werden den Tabellenmetadaten hinzugefügt

  • Bei der nächsten Komprimierung werden alte V2-Löschdateien entfernt

  • Bei neuen Änderungen werden die Deletion Vector-Dateien von V3 verwendet

  • Bei der Aktualisierung werden keine historischen Daten zur Nachverfolgung von Änderungen in den einzelnen Zeilen wieder aufgefüllt

Aktivierung von Löschvektoren

Um die Vorteile von Löschvektoren für Aktualisierungen, Löschungen und Zusammenführungen zu nutzen, konfigurieren Sie Ihren Schreibmodus.

Verwenden von Spark SQL:

ALTER TABLE myns.orders_v3 SET TBLPROPERTIES ('format-version' = '3', 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )

Diese Einstellungen stellen sicher, dass bei Aktualisierungs-, Lösch- und Zusammenführungsvorgängen Löschvektordateien erstellt werden, anstatt ganze Datendateien neu zu schreiben.

Nutzung von Row-Lineage für die Nachverfolgung von Änderungen

V3 fügt automatisch Row-Lineage-Metadatenfelder hinzu, um Änderungen nachzuverfolgen.

Verwenden von Spark SQL:

# Query with parameter value provided last_processed_sequence = 47 SELECT id, data, _row_id, _last_updated_sequence_number FROM myns.orders_v3 WHERE _last_updated_sequence_number > :last_processed_sequence

Das Feld _row_id identifiziert jede Zeile eindeutig, während _last_updated_sequence_number nachverfolgt, wann die Zeile zuletzt geändert wurde. Verwenden Sie diese Felder, um:

  • Identifizieren Sie geänderte Zeilen für die inkrementelle Verarbeitung

  • Verfolgen Sie die Datenherkunft zur Einhaltung gesetzlicher Vorschriften

  • Optimieren Sie CDC-Pipelines

  • Reduzieren Sie die Rechenkosten, indem Sie nur Änderungen verarbeiten

Bewährte Methoden für V3

Wann sollte V3 verwendet werden

Erwägen Sie ein Upgrade auf V3 oder einen Start mit V3, wenn:

  • Sie führen häufig Batch-Updates oder Löschungen durch

  • Sie müssen die Anforderungen der DSGVO oder anderer gesetzlicher Vorschriften zur Löschung erfüllen

  • Ihre Workloads beinhalten häufig auftretende Störungen

  • Sie benötigen effiziente CDC-Workflows

  • Sie möchten die Speicherkosten für kleine Dateien reduzieren

  • Sie benötigen bessere Funktionen zur Nachverfolgung von Änderungen

Optimierung der Schreibleistung

  • Aktivieren Sie Löschvektoren für Workloads mit hohem Aktualisierungsaufwand:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • Konfigurieren Sie die entsprechenden Dateigrößen:

    SET TBLPROPERTIES ( 'write.target-file-size-bytes' = '536870912' — 512 MB )

Optimierung der Leseleistung

  • Nutzen Sie Row-Lineage für die inkrementelle Verarbeitung

  • Nutzen Sie Zeitreisen, um auf historische Daten zuzugreifen, ohne sie kopieren zu müssen

  • Aktivieren Sie die Erfassung von Statistiken für eine bessere Abfrageplanung

Migrationsstrategie

Bei der Migration von V2 auf V3:

  • Testen Sie zuerst außerhalb der Produktion — Überprüfen Sie den Upgrade-Prozess und die Leistung

  • Upgrade in Zeiten geringer Aktivität — Minimierung der Auswirkungen auf parallele Abläufe

  • Überwachen Sie die anfängliche Leistung — Verfolgen Sie die Kennzahlen nach dem Upgrade

  • Komprimierung ausführen — Konsolidieren Sie gelöschte Dateien nach dem Upgrade

  • Dokumentation aktualisieren — Spiegelt die V3-Funktionen in der Teamdokumentation wider

Überlegungen zur Kompatibilität

  • Engine-Versionen — Stellen Sie sicher, dass alle Engines, die auf die Tabelle zugreifen, V3 unterstützen

  • Tools von Drittanbietern — Überprüfen Sie vor dem Upgrade die V3-Kompatibilität

  • Backup-Strategie — Testen Sie Snapshot-basierte Wiederherstellungsverfahren

  • Überwachung — Aktualisieren Sie die Überwachungs-Dashboards für V3-spezifische Messwerte

Fehlerbehebung

Häufige Fehler

Fehler: „Formatversion 3 wird nicht unterstützt“
  • Stellen Sie sicher, dass Ihre Engine-Version V3 unterstützt

    Die V3-Unterstützung für AWS Amazon-Dienste lautet wie folgt:

    Service V3-Unterstützung
    EMR Spark Version 7.12+
    AWS Glue ETL Ja
    Amazon SageMaker Unified Studio-Notizbücher Ja
    AWS Glue: Iceberg REST API, Tabellenverwaltung Ja
    Amazon S3 S3-Tabellen: Iceberg REST API, Tabellenverwaltung Ja
    Amazon Athena (Trino) Nein
  • Überprüfen Sie die Kompatibilität des Katalogs

  • Stellen Sie die neuesten AWS Dienstversionen sicher

Leistungseinbußen nach dem Upgrade
  • Stellen Sie sicher, dass keine Verdichtungsfehler vorliegen. Weitere Informationen finden Sie unter Protokollierung und Überwachung für S3-Tabellen.

  • Prüfen Sie, ob Löschvektoren aktiviert sind. Stellen Sie sicher, dass die folgenden Eigenschaften festgelegt sind:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • Sie können die Tabelleneigenschaften mit dem folgenden Code überprüfen:

    DESCRIBE FORMATTED myns.orders_v3
  • Überprüfen Sie die Partitionsstrategie. Eine übermäßige Partitionierung kann zu kleinen Dateien führen. Führen Sie die folgende Abfrage aus, um die durchschnittliche Dateigröße für Ihre Tabelle zu ermitteln:

    SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files
Inkompatibilität mit Tools von Drittanbietern
  • Überprüfen Sie, ob das Tool die V3-Spezifikation

  • Erwägen Sie, V2-Tabellen für nicht unterstützte Tools beizubehalten

  • Kontaktieren Sie den Tool-Anbieter, um den Zeitplan für den V3-Support

Abrufen von Hilfe

  • AWS Support: Wenden Sie sich AWS bei dienstspezifischen Problemen an den Support

  • Apache Iceberg-Community: Iceberg Slack

  • AWS Dokumentation: Analytics-Dokumentation AWS

Preisgestaltung

Verfügbarkeit

Apache Iceberg V3-Unterstützung ist in allen AWS Regionen verfügbar, in denen Amazon EMR, AWS Glue Data Catalog, AWS Glue ETL und S3 Tables betrieben werden.

Weitere Ressourcen