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.
Funktionsweise von Hudi
Wenn Sie Hudi mit Amazon EMR verwenden, können Sie mit der Spark-Datenquellen-API oder dem DeltaStreamer Hudi-Hilfsprogramm Daten in den Datensatz schreiben. Hudi organisiert einen Datensatz in einer partitionierten Verzeichnisstruktur unter einer
, die einer herkömmlichen Hive-Tabelle ähnelt. Die Besonderheiten, wie die Daten in diesen Verzeichnissen als Dateien angelegt werden, hängen von dem von Ihnen ausgewählten Dataset-Typ ab. Sie können entweder Copy on Write (CoW, Kopieren beim Schreiben) oder Merge on Read (MoR, Beim Lesen zusammenführen) wählen.basepath
Unabhängig vom Dataset-Typ wird jede Partition in einem Dataset eindeutig durch ihren partitionpath
relativ zum basepath
identifiziert. Innerhalb jeder Partition werden Datensätze in mehrere Datendateien verteilt. Weitere Informationen finden Sie unter Dateimanagement
Jede Aktion in Hudi hat einen entsprechenden Commit, der durch einen monoton ansteigenden Zeitstempel gekennzeichnet ist, der als Instant bezeichnet wird. Hudi speichert eine Reihe aller am Datensatz ausgeführten Aktionen als Zeitleiste. Hudi nutzt die Timeline, um eine Snapshot-Isolation zwischen Lesern und Autoren zu ermöglichen und einen Rollback zu einem früheren Zeitpunkt zu ermöglichen. Weitere Informationen zu den von Hudi aufgezeichneten Aktionen und dem Status der Aktionen finden Sie unter Timeline
Grundlegendes zu den Speichertypen von Datensätzen: „Beim Schreiben kopieren“ gegenüber „beim Lesen zusammenführen“
Wenn Sie ein Hudi-Datensatz erstellen, geben Sie an, dass das Datensatz entweder beim Schreiben kopiert oder beim Lesen zusammengeführt werden soll.
-
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. CoW ist der Standardspeichertyp.
-
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 logische Ansichten für den Zugriff auf die Daten:
-
Lese-optimierte Ansicht – Stellt den neuesten festgeschriebenen Datensatz aus CoW-Tabellen und den neuesten komprimierten Datensatz aus MoR-Tabellen bereit.
-
Inkrementelle Ansicht – Stellt einen Änderungsstream zwischen zwei Aktionen aus einem CoW-Datensatz bereit, um nachgeschaltete Aufträge zu versorgen und Workflows zu extrahieren, transformieren, laden (ETL).
-
Echtzeitansicht – Stellt die neuesten festgeschriebenen Daten aus einer MoR-Tabelle bereit, indem die spalten- und zeilenbasierten Dateien inline zusammengeführt werden.
Wenn Sie die leseoptimierte Ansicht abfragen, gibt die Abfrage alle komprimierten Daten zurück, enthält jedoch nicht die neuesten Delta-Commits. Das Abfragen dieser Daten bietet eine gute Leseleistung, aber die neuesten Daten werden nicht mehr angezeigt. Wenn Sie die Echtzeitansicht abfragen, führt Hudi die komprimierten Daten beim Lesen mit den Delta-Commits zusammen. Die neuesten Daten stehen für die Abfrage zur Verfügung, aber der Rechenaufwand für die Zusammenführung macht die Abfrage weniger performant. Die Möglichkeit, komprimierte Daten oder Echtzeitdaten abzufragen, ermöglicht es Ihnen, bei der Abfrage zwischen Leistung und Flexibilität zu wählen.
Weitere Informationen zu den Kompromissen zwischen Speichertypen finden Sie unter Speichertypen und Ansichten
Hudi erstellt zwei Tabellen im Hive-Metastore für MoR: eine Tabelle mit dem von Ihnen angegebenen Namen, bei der es sich um eine leseoptimierte Ansicht handelt, und eine Tabelle mit demselben Namen, an den _rt
angehängt wird, bei der es sich um eine Echtzeitansicht handelt. Sie können beide Tabellen abfragen.
Registrieren eines Hudi-Datensatzes bei Ihrem Metastore
Wenn Sie eine Hudi-Tabelle mit dem Hive-Metastore registrieren, können Sie Hudi-Tabellen wie jede andere Tabelle mit Hive, Spark SQL oder Presto abfragen. Darüber hinaus können Sie Hudi in AWS Glue integrieren, indem Sie Hive und Spark so konfigurieren, dass sie den AWS Glue-Datenkatalog als Metastore verwenden. Hudi registriert für MoR-Tabellen den Datensatz als zwei Tabellen im Metastore: eine Tabelle mit dem von Ihnen angegebenen Namen, bei der es sich um eine leseoptimierte Ansicht handelt, und eine Tabelle mit demselben Namen, an die _rt
angehängt wird, bei dem es sich um eine Echtzeitansicht handelt.
Sie registrieren eine Hudi-Tabelle mit dem Hive-Metastore, wenn Sie mit Spark ein Hudi-Datensatz erstellen, indem Sie die Option HIVE_SYNC_ENABLED_OPT_KEY
auf "true"
einstellen und andere erforderliche Eigenschaften bereitstellen. Weitere Informationen finden Sie unter Arbeiten mit einem Hudi-Datensatz. Darüber hinaus können Sie das Befehlszeilenprogramm hive_sync_tool verwenden, um einen Hudi-Datensatz separat als Tabelle in Ihrem Metastore zu registrieren.