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 der Iceberg-Tabellenformatspezifikation Version 3
Die neueste Version der Apache Iceberg-Tabellenformatspezifikation ist Version 3. Diese Version bietet erweiterte Funktionen für den Aufbau von Data Lakes im Petabyte-Bereich mit verbesserter Leistung und geringerem Betriebsaufwand. Sie behebt häufig auftretende Leistungsengpässe bei Version 2, insbesondere bei Batch-Updates und Compliance-Löschvorgängen.
AWS bietet Unterstützung für Löschvektoren und Zeilenabstammung, wie sie in der Iceberg-Spezifikation Version 3 definiert sind. Diese Funktionen sind mit Apache Spark unter folgenden Bedingungen verfügbar. AWS-Services
| AWS-Service | Unterstützung für Version 3. |
|---|---|
|
Amazon EMR Version 7.12 und höher |
|
|
Ja |
|
|
AWS Glue: Iceberg REST API, Tabellenverwaltung |
Ja |
|
Ja |
|
|
Amazon S3 S3-Tabellen: Iceberg-REST-API, Tabellenverwaltung |
Ja |
|
Nein |
Die wichtigsten Funktionen von Version 3
Löschvektoren ersetzen die positionsbezogenen Löschdateien, die in Version 2 verwendet wurden, durch ein effizientes Binärformat, das als Puffin-Dateien gespeichert wurde. Dadurch entfällt der Schreibaufwand bei zufälligen Batch-Updates und Löschungen im Einklang mit der Datenschutz-Grundverordnung (DSGVO). Außerdem wird der Aufwand für die Pflege aktueller Daten erheblich reduziert. Organizations, die häufig Updates verarbeiten, werden durch weniger kleine Dateien sofortige Verbesserungen der Schreibleistung und geringere Speicherkosten feststellen.
Die Zeilenherkunft ermöglicht eine präzise Nachverfolgung von Änderungen auf Zeilenebene. Ihre nachgelagerten Systeme können Änderungen inkrementell verarbeiten, wodurch Datenpipelines 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
Version 3 behält die Abwärtskompatibilität mit den Tabellen der Version 2 bei. AWS-Services unterstützen Tabellen der Versionen 2 und 3 gleichzeitig, sodass Sie:
-
Führen Sie Abfragen für Tabellen der Versionen 2 und 3 aus.
-
Führen Sie ein Upgrade vorhandener Tabellen der Version 2 auf Version 3 durch, ohne dass Daten neu geschrieben werden müssen.
-
Führen Sie Zeitreiseabfragen aus, die Snapshots von Version 2 und Version 3 umfassen.
-
Verwenden Sie Schemaentwicklung und versteckte Partitionierung für alle Tabellenversionen.
Erste Schritte mit Version 3
Voraussetzungen
Bevor Sie mit Tabellen der Version 3 arbeiten, stellen Sie sicher, dass Sie über Folgendes verfügen:
-
Und AWS-Konto mit entsprechenden AWS Identity and Access Management (IAM-) Berechtigungen.
-
Zugriff auf einen oder mehrere AWS Analysedienste (Amazon EMR AWS Glue, Amazon SageMaker Unified Studio-Notebooks oder Amazon S3 S3-Tabellen).
-
Ein S3-Bucket zum Speichern von Tabellendaten und Metadaten.
-
Ein Tabellen-Bucket für die ersten Schritte mit Amazon S3 S3-Tabellen oder ein Allzweck-S3-Bucket, wenn Sie Ihre eigene Iceberg-Infrastruktur aufbauen.
-
Ein konfigurierter Katalog. AWS Glue
Tabellen der Version 3 werden erstellt
Erstellen neuer Tabellen
Um eine neue Iceberg-Tabelle der Version 3 zu erstellen, setzen Sie die format-version Tabelleneigenschaft 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 der Tabellen von Version 2 auf Version 3
Sie können bestehende Tabellen der Version 2 atomar auf Version 3 aktualisieren, ohne Daten neu schreiben zu müssen.
Verwenden von Spark SQL:
ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
Wichtig
Version 3 ist ein unidirektionales Upgrade. Nachdem eine Tabelle von Version 2 auf Version 3 aktualisiert wurde, kann sie nicht mit Standardoperationen wieder auf Version 2 herabgestuft werden.
Was passiert während des Upgrades:
-
Ein neuer Metadaten-Snapshot wird atomar erstellt.
-
Bestehende Parquet-Datendateien werden wiederverwendet.
-
Felder für die Zeilenherkunft werden zu den Metadaten der Tabelle hinzugefügt.
Nach dem Upgrade:
-
Bei der nächsten Komprimierung werden die gelöschten Dateien der alten Version 2 entfernt.
-
Bei neuen Änderungen werden die Löschvektordateien der Version 3 verwendet.
Bei der Aktualisierung werden keine historischen Daten von Datensätzen zur Nachverfolgung von Änderungen der Zeilenabstammung aufgefüllt.
Löschvektoren werden aktiviert
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.
Verwendung der Zeilenabstammung für die Nachverfolgung von Änderungen
Version 3 fügt automatisch Metadatenfelder für die Zeilenherkunft 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 _row_id Feld identifiziert jede Zeile eindeutig und _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 aus Gründen der Einhaltung gesetzlicher Vorschriften.
-
Optimieren Sie CDC-Pipelines.
-
Reduzieren Sie die Rechenkosten, indem Sie nur Änderungen verarbeiten.
Bewährte Methoden für Version 3
Wann sollte Version 3 verwendet werden
Erwägen Sie, auf Version 3 zu aktualisieren oder mit Version 3 zu beginnen, wenn:
-
Sie führen häufig Batch-Updates oder Löschungen durch.
-
Sie müssen die Anforderungen der DSGVO oder der Einhaltung 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 aktualisierungsintensive Workloads:
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
-
Verwenden 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.
Migrationsstrategie
Beachten Sie bei der Migration von Version 2 zu Version 3 die folgenden bewährten Methoden:
-
Testen Sie zunächst in einer Umgebung außerhalb der Produktionsumgebung, um den Upgrade-Prozess und die Leistung zu überprüfen.
-
Führen Sie das Upgrade in Zeiten geringer Aktivität durch, um die Auswirkungen auf den gleichzeitigen Betrieb zu minimieren.
-
Überwachen Sie die anfängliche Leistung und verfolgen Sie die Kennzahlen nach dem Upgrade.
-
Führen Sie die Komprimierung durch, um gelöschte Dateien nach dem Upgrade zu konsolidieren.
-
Aktualisieren Sie Ihre Teamdokumentation, sodass sie die Funktionen von Version 3 wiedergibt.
Erwägungen zur Kompatibilität
-
Engine-Versionen — Stellen Sie sicher, dass alle Engines, die auf die Tabelle zugreifen, Version 3 unterstützen.
-
Tools von Drittanbietern — Vergewissern Sie sich vor dem Upgrade, dass Ihr Tool mit Version 3 kompatibel ist.
-
Backup-Strategie — Testen Sie Snapshot-basierte Wiederherstellungsverfahren.
-
Überwachung — Aktualisieren Sie die Überwachungs-Dashboards für Version 3-spezifische Messwerte.
Fehlerbehebung
Häufige Probleme
Fehler: „Formatversion 3 wird nicht unterstützt“
-
Stellen Sie sicher, dass Ihre Engine-Version Version 3 unterstützt. Einzelheiten finden Sie in der Tabelle am Anfang dieses Abschnitts.
-
Überprüfen Sie die Katalogkompatibilität.
-
Stellen Sie sicher, dass Sie die neuesten Versionen von verwenden AWS-Services.
Leistungseinbußen nach dem Upgrade
-
Stellen Sie sicher, dass keine Verdichtungsfehler vorliegen. Weitere Informationen finden Sie unter Protokollierung und Überwachung für S3-Tabellen in der Amazon S3 S3-Dokumentation.
-
Vergewissern Sie sich, dass Löschvektoren aktiviert sind. Die folgenden Eigenschaften sollten festgelegt werden:
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 Ihre 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
-
Stellen Sie sicher, dass das Tool die Version 3-Spezifikation unterstützt.
-
Erwägen Sie, die Tabellen der Version 2 für Tools zu verwalten, die nicht unterstützt werden.
-
Erkundigen Sie sich beim Tool-Anbieter nach dem Zeitplan für den Support für Version 3.
Hilfe erhalten
-
Bei AWS-Service spezifischen Problemen wenden Sie sich an AWS -Support
. -
Um Hilfe von der Iceberg-Community zu erhalten, verwende den Iceberg-Slack-Kanal
.
Preisgestaltung
Verfügbarkeit
Die Unterstützung der Iceberg-Tabellenformatspezifikation Version 3 ist überall verfügbar, AWS-Regionen
wo Amazon EMR-, AWS Glue AWS Glue Data Catalog, und S3-Tabellen eingesetzt werden. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter AWS-Services Nach