View a markdown version of this page

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-Tabellenformat-Spezifikation. Sie bietet erweiterte Funktionen für den Aufbau von Data Lakes im Petabyte-Bereich mit verbesserter Leistung und reduziertem Betriebsaufwand. V3 behebt häufig auftretende Leistungsengpässe, die bei Version 2 (V2) auftreten, insbesondere im Zusammenhang mit Batch-Updates und Compliance-Löschungen.

AWS bietet Unterstützung für Löschvektoren, Zeilenherkunft und den Variantendatentyp, wie in der Apache Iceberg Version 3 (V3) -Spezifikation definiert. Sie können diese Funktionen mit Apache Spark auf Amazon EMR, AWS Glue ETL, Amazon SageMaker Unified Studio Notebooks und Apache Iceberg-Tabellen im AWS Glue Data Catalog verwenden, einschließlich Amazon S3-Tabellen. https://aws.amazon.com/s3/features/tables/ Der Variantendatentyp ist spezifisch für S3-Tabellen.

Die wichtigsten Funktionen in V3

Vektoren zum Löschen

Ersetzt die positionellen Löschdateien von V2 durch ein effizientes Binärformat, das als Puffin-Dateien gespeichert wird. Dadurch entfällt die Schreibverstärkung durch zufällige Stapelaktualisierungen und DSGVO-konforme Löschungen, wodurch der Aufwand für die Pflege neuer Daten erheblich reduziert wird. Unternehmen, die häufig Aktualisierungen durchführen, werden aufgrund der geringeren Anzahl kleiner Dateien eine sofortige Verbesserung der Schreibleistung und geringere Speicherkosten feststellen.

Row-lineage

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

Varianter Datentyp

Mit dem Variant-Datentyp können Sie halbstrukturierte Daten wie JSON direkt in Iceberg-Tabellen schreiben, ohne im Voraus ein festes Schema definieren zu müssen. V3-kompatible Engines zerkleinern Ihre halbstrukturierten Daten beim Schreiben in versteckte Spalten und generieren Parquet-Spaltenstatistiken, die Abfrage-Engines für Optimierungen wie das Bereinigen von Dateien verwenden. Dadurch werden die Daten reduziert, die Ihre analytischen Abfragen scannen. S3 Tables bietet eine kontinuierliche Tabellenpflege für Variantenspalten, einschließlich Komprimierung, sodass Sie Daten aus halbstrukturierten Quellen in größeren Dateien konsolidieren können, die Iceberg-Engines effizient lesen können.

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 in V2- als auch in V3-Tabellen ausführen

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

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

  • Verwenden Sie die Schemaentwicklung und die versteckte Partitionierung für alle Tabellenversionen

Wichtig

V3 ist ein einseitiges Upgrade. Sobald eine Tabelle von V2 auf V3 aktualisiert wurde, kann sie nicht mehr durch Standardoperationen auf V2 zurückgestuft 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 Allzweck-S3-Bucket, wenn Sie Ihre eigene Iceberg-Infrastruktur aufbauen

  • AWS Der Glue-Katalog ist 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 vorhandene 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 einseitiges Upgrade. Sobald eine Tabelle von V2 auf V3 aktualisiert wurde, kann sie nicht mehr durch Standardoperationen auf V2 zurückgestuft werden.

Was passiert beim Upgrade:

  • Ein neuer Metadaten-Snapshot wird atomar erstellt

  • Bestehende Parquet-Datendateien werden wiederverwendet

  • Row-lineage Felder werden zu 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

  • Das Upgrade führt kein historisches Auffüllen von Datensätzen zur Nachverfolgung von Änderungen an der Zeilenabstammung durch

Löschvektoren aktivieren

Um die Vorteile der 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 Row-lineage für die Nachverfolgung von Änderungen

V3 fügt automatisch zeilenspezifische Metadatenfelder hinzu, um Änderungen nachzuverfolgen.

Verwendung 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 verfolgt, 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 auf Einhaltung gesetzlicher Vorschriften

  • Optimieren Sie CDC-Pipelines

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

Verwenden des Variant-Datentyps

Wichtig

Der Variantendatentyp ist nur in bestimmten AWS Regionen verfügbar. Die vollständige Liste der unterstützten Regionen finden Sie unterVerfügbarkeit.

Mit dem Variant-Datentyp können Sie halbstrukturierte Daten wie JSON direkt in Ihre Iceberg-Tabellen schreiben, ohne im Voraus ein festes Schema definieren zu müssen. Sie können Daten schneller schreiben und erhalten dennoch eine effiziente analytische Abfrageleistung. Iceberg V3-kompatible Engines zerkleinern Ihre halbstrukturierten Daten beim Schreiben in versteckte Spalten. Diese versteckten Spalten generieren Parquet-Spaltenstatistiken, die Abfrage-Engines für Optimierungen wie das Bereinigen von Dateien verwenden.

Erstellen einer Tabelle mit einer Variantenspalte mit Spark SQL:

CREATE TABLE IF NOT EXISTS myns.events ( event_id bigint, event_timestamp timestamp, source string, event_data VARIANT ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )

Einfügen halbstrukturierter Daten in die Variantenspalte:

INSERT INTO myns.events VALUES ( 1, current_timestamp(), 'web-app', PARSE_JSON('{"user_id": "u-1234", "action": "page_view", "page": "/products", "duration_ms": 350}') ); INSERT INTO myns.events VALUES ( 2, current_timestamp(), 'mobile-app', PARSE_JSON('{"user_id": "u-5678", "action": "purchase", "items": [{"sku": "A100", "qty": 2}], "total": 49.99}') );

Bei S3-Tabellen läuft die Tabellenpflege für Variantenspalten, einschließlich der Komprimierung, automatisch. Die Komprimierung konsolidiert Daten aus halbstrukturierten Quellen aus kleinen Dateien in größeren Dateien, die Iceberg-Engines effizienter lesen können, wodurch die Abfrageleistung im Laufe der Zeit verbessert wird.

Bewährte Methoden für V3

Wann sollte V3 verwendet werden

Erwägen Sie, auf V3 zu aktualisieren oder mit V3 zu beginnen, wenn:

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

  • Sie müssen die Anforderungen der DSGVO oder der gesetzlichen Bestimmungen zum Löschen erfüllen

  • Bei Ihren Workloads kommt es häufig zu Unterbrechungen

  • 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 die Zeilenabstammung für die inkrementelle Verarbeitung

  • Verwenden Sie Zeitreisen, um auf historische Daten zuzugreifen, ohne sie zu kopieren

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

Strategie für die Migration

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 den gleichzeitigen Betrieb

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

  • Komprimierung ausführen — Dateien nach dem Upgrade konsolidieren und löschen

  • Dokumentation aktualisieren — Spiegeln Sie 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

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

  • Backup-Strategie — Testen Sie die auf Snapshots basierenden Wiederherstellungsverfahren

  • Überwachung — Aktualisieren Sie die Überwachungs-Dashboards für Metriken V3-specific

Überlegungen zur Komprimierung

Compaction schreibt standardmäßig geschredderte Parquet-Dateien. Ältere Lesegeräte, die das Schreddern nicht unterstützen, können komprimierte Dateien möglicherweise nicht lesen. Sie können das Schreddern deaktivieren, indem Sie die Tabelleneigenschaft festlegen. write.variant.shredding.enabled=false

Fehlerbehebung

Häufige Fehler

Fehler: „Format-Version 3 wird nicht unterstützt“
  • Überprüfen Sie Ihren Abfrage-Engine-Katalog auf Kompatibilität mit Iceberg V3.

  • Stellen Sie sicher, dass Sie die neuesten AWS Serviceversionen verwenden.

  • 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 Unterstützung für V3-Varianten
    EMR Spark Version 7.12+ Version 8.0+
    AWS ETL kleben Ja Nein
    Amazon SageMaker Unified Studio-Notizbücher Ja Nein
    AWS Glue: Iceberg REST-API, Tabellenpflege Ja Nein
    Amazon S3-Tabellen: Iceberg REST-API, Tabellenpflege Ja Ja*
    Amazon Athena (Trino) Nein Nein

    *Teilweise Verfügbarkeit in der Region

Leistungseinbußen nach dem Upgrade
  • Stellen Sie sicher, dass keine Komprimierungsfehler 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
  • Das Verify-Tool unterstützt die V3-Spezifikation

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

  • Den Zeitplan für den V3-Support erhalten Sie vom Anbieter des Tools

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 für Löschvektoren und Zeilenabstammung ist in allen AWS Regionen verfügbar, in denen Amazon EMR, AWS Glue Data Catalog, AWS Glue ETL und S3 Tables eingesetzt werden.

Der Variantendatentyp in S3-Tabellen ist in den folgenden AWS Regionen verfügbar: USA Ost (Nord-Virginia), USA Ost (Ohio), USA West (Oregon), Asien-Pazifik (Mumbai), Asien-Pazifik (Seoul), Asien-Pazifik (Singapur), Asien-Pazifik (Sydney), Asien-Pazifik (Tokio), Kanada (Zentral), Europa (Frankfurt), Europa (Irland), Europa (London), Europa (Paris) und Süd Amerika (São Paulo).

Weitere Ressourcen