Apache Hudi und Lake Formation - Amazon EMR

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 und Lake Formation

Die EMR Amazon-Versionen 6.15.0 und höher bieten Unterstützung für eine differenzierte Zugriffskontrolle, die auf Apache Hudi basiert, wenn Sie Daten AWS Lake Formation mit Spark lesen und schreiben. SQL Amazon EMR unterstützt die Zugriffskontrolle auf Tabellen-, Zeilen-, Spalten- und Zellenebene mit Apache Hudi. Mit dieser Funktion können Sie Snapshot-Abfragen für copy-on-write Tabellen ausführen, um den neuesten Snapshot der Tabelle zu einem bestimmten Commit- oder Komprimierungszeitpunkt abzufragen.

Derzeit muss ein Lake Formation-fähiger EMR Amazon-Cluster die Commit-Zeitspalte von Hudi abrufen, um inkrementelle Abfragen und Zeitreiseabfragen durchzuführen. Die timestamp as of Syntax und die Funktion von Spark werden nicht unterstützt. Spark.read() Die richtige Syntax istselect * from table where _hoodie_commit_time <= point_in_time. Weitere Informationen finden Sie unter Point-in-Time-Time-Travel-Abfragen in der Hudi-Tabelle.

Die folgende Unterstützungsmatrix listet einige Kernfeatures von Apache Hudi mit Lake Formation auf:

Kopieren Sie beim Schreiben Beim Lesen zusammenführen (MoR)

Snapshot-Abfragen — Spark SQL

Leseoptimierte Abfragen — Spark SQL

Inkrementelle Abfragen

Zeitreiseabfragen

Metadaten-Tabellen

DMLINSERTBefehle

DDLBefehle

Spark-Datenquellenabfragen

Spark-Datenquellenschreibvorgänge

Abfragen von Hudi-Tabellen

In diesem Abschnitt wird gezeigt, wie Sie die oben beschriebenen unterstützten Abfragen auf einem Lake-Formation-fähigen Cluster ausführen können. Bei der Tabelle sollte es sich um eine registrierte Katalogtabelle handeln.

  1. Verwenden Sie die folgenden Befehle, um die Spark-Shell zu starten.

    spark-sql --jars /usr/lib/hudi/hudi-spark-bundle.jar \ --conf spark.serializer=org.apache.spark.serializer.KryoSerializer \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog \ --conf spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \ --conf spark.sql.catalog.spark_catalog.lf.managed=true

    Wenn Sie möchten, dass Lake Formation einen Datensatzserver zur Verwaltung Ihres Spark-Katalogs verwendet, setzen Sie spark.sql.catalog.<managed_catalog_name>.lf.managed ihn auf true.

  2. Verwenden Sie die folgenden Befehle, um den neuesten Snapshot der copy-on-write Tabellen abzufragen.

    SELECT * FROM my_hudi_cow_table
    spark.read.table("my_hudi_cow_table")
  3. Um die neuesten komprimierten Daten von MOR-Tabellen abzufragen, können Sie die leseoptimierte Tabelle mit dem Suffix _ro abfragen:

    SELECT * FROM my_hudi_mor_table_ro
    spark.read.table("my_hudi_mor_table_ro")
Anmerkung

Die Leistung von Lesevorgängen auf Lake Formation-Clustern kann aufgrund von Optimierungen, die nicht unterstützt werden, langsamer sein. Zu diesen Features gehören das Auflisten von Dateien auf der Grundlage von Hudi-Metadaten und das Überspringen von Daten. Wir empfehlen Ihnen, die Leistung Ihrer Anwendung zu testen, um sicherzustellen, dass sie Ihrem SLA entspricht.