Apache Hudi-Datensätze abfragen - Amazon Athena

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.

Apache Hudi-Datensätze abfragen

Apache Hudi ist ein Open-Source-Datenmanagement-Framework, das die inkrementelle Datenverarbeitung vereinfacht. Einfüge-, Aktualisierungs-, Upsert- und Löschaktionen auf Datensatzebene werden viel granularer verarbeitet, wodurch der Overhead reduziert wird. Upsert bezieht sich auf die Möglichkeit, Datensätze in einen vorhandenen Datensatz einzufügen, wenn sie noch nicht vorhanden sind, oder sie zu aktualisieren, wenn dies der Fall ist.

Hudi verarbeitet Dateneinfügungs- und Aktualisierungsereignisse, ohne viele kleine Dateien zu erstellen, die Leistungsprobleme bei der Analyse verursachen können. Apache Hudi verfolgt automatisch Änderungen und führt Dateien zusammen, damit sie die optimale Größe behalten. Dadurch entfällt die Notwendigkeit, benutzerdefinierte Lösungen zu erstellen, die viele kleine Dateien überwachen und in weniger große Dateien umschreiben.

Hudi-Datensätze eignen sich für die folgenden Anwendungsfälle:

Von Hudi verwaltete Datensätze werden mithilfe von offenen Speicherformaten in Amazon S3 gespeichert. Derzeit kann Athena komprimierte Hudi-Datensätze lesen, aber keine Hudi-Daten schreiben. Athena unterstützt bis zu Hudi-Version 0.8.0 mit Athena-Engine-Version 2 und Hudi-Version 0.14.0 mit Athena-Engine-Version 3. Änderungen sind vorbehalten. Athena kann die Lesekompatibilität mit Tabellen, die mit späteren Versionen von Hudi erstellt wurden, nicht garantieren. Weitere Informationen zum Athena-Engine-Versioning finden Sie unter Athena-Engine-Versionierung. Weitere Informationen zu Hudi-Features und Versionsverwaltung finden Sie in der Hudi-Dokumentation auf der Apache-Website.

Ein Hudi-Datensatz kann einen der folgenden Typen haben:

  • Copy on Write (CoW, Beim Schreiben kopieren) – Daten werden in einem spaltenbasierten Format (Parquet) gespeichert, und jedes Update erstellt während eines Schreibvorgangs eine neue Version von Dateien.

  • Merge on Read (MoR, Beim Lesen zusammenführen) – Daten werden mit einer Kombination aus spalten- (Parquet) und zeilenbasierten (Avro) Formaten gespeichert. Updates werden in zeilenbasierten delta-Dateien protokolliert und nach Bedarf komprimiert, um neue Versionen der Spaltendateien zu erstellen.

Bei CoW-Datasets wird jedes Mal, wenn ein Datensatz aktualisiert wird, die Datei, die den Datensatz enthält, mit den aktualisierten Werten neu geschrieben. Bei einem MoR-Datensatz schreibt Hudi jedes Mal, wenn es eine Aktualisierung gibt, nur die Zeile für den geänderten Datensatz. MoR eignet sich besser für schreib- oder änderungsintensive Workloads mit weniger Lesevorgängen. CoW eignet sich besser für leseintensive Workloads für Daten, die sich seltener ändern.

Hudi bietet drei Abfragetypen für den Zugriff auf die Daten:

  • Snapshots – Abfragen, die den neuesten Snapshot der Tabelle ab einer bestimmten Commit- oder Komprimierungsaktion anzeigen. Bei MoR-Tabellen stellen Snapshot-Abfragen den neuesten Status der Tabelle dar, indem die Basis- und Deltadateien des letzten Datei-Slices zum Zeitpunkt der Abfrage zusammengeführt werden.

  • Inkrementelle Abfragen – Abfragen sehen nur neue Daten, die seit einem bestimmten Commit/Komprimierung in die Tabelle geschrieben wurden. Dies bietet effektiv Änderungsströme, um inkrementelle Data-Pipelines zu ermöglichen.

  • Lesen von optimierten Abfragen – Bei MoR-Tabellen sehen Abfragen die neuesten komprimierten Daten. Bei CoW-Tabellen sehen Abfragen die neuesten festgeschriebenen Daten.

Die folgende Tabelle zeigt die möglichen Hudi-Abfragetypen für jeden Tabellentyp.

Tabellentyp Mögliche Hudi-Abfragetypen
Kopieren Sie beim Schreiben Snapshot, inkrementell
Beim Lesen zusammenführen Snapshot, inkrementell, leseoptimiert

Derzeit unterstützt Athena-Snapshot-Abfragen und lese-optimierte Abfragen, aber keine inkrementellen Abfragen. In MoR-Tabellen werden alle Daten, die leseoptimierten Abfragen ausgesetzt sind, komprimiert. Dies bietet eine gute Leistung, enthält jedoch nicht die neuesten Delta-Commits. Snapshot-Abfragen enthalten die aktuellsten Daten, verursachen jedoch einen gewissen Rechenaufwand, wodurch diese Abfragen weniger leistungsfähig sind.

Weitere Informationen zu den Kompromissen zwischen Tabellen- und Abfragetypen finden Sie unter Tabellen- und Abfragetypen in der Apache-Hudi-Dokumentation.

Hudi Terminologieänderung: Ansichten sind jetzt Abfragen

Ab der Version 0.5.1 von Apache Hudi werden Dinge, die früher als Ansichten bezeichnet wurden, jetzt Abfragen genannt. In der folgenden Tabelle werden die Änderungen zwischen dem alten und dem neuen Term zusammengefasst.

Alter Begriff Neuer Begriff

CoW: Lese-optimierte Ansicht

MoR: Echtzeitansicht

Snapshotabfragen

Inkrementelle Ansicht Inkrementelle Abfrage
MoR-Lese-optimierte Ansicht Leseoptimierte Abfrage