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/
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
-
Amazon EMR: Preise für Rechenleistung und Speicher
-
AWS Glue: Auftragsausführung und Preisgestaltung für den Datenkatalog
-
S3-Tabellen: Speicher und Preisgestaltung auf Anfrage
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).