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 mit detaillierter Zugriffskontrolle
Die Amazon EMR-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 SQL lesen und schreiben. 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 Amazon EMR-Cluster die Commit-Zeitspalte von Hudi abrufen, um inkrementelle Abfragen und Zeitreiseabfragen durchzuführen. Die Syntax und die Funktion von Spark werden nicht unterstützt. timestamp as of 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 |
✓ |
✓ |
|
DML- |
✓ |
✓ |
|
DDL-Befehle |
||
|
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.
-
Verwenden Sie den folgenden Befehl, um die Spark-Shell auf EMR 7.10 oder höheren Versionen zu starten:
spark-sql --jars /usr/lib/hudi/hudi-spark-bundle.jar \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog \ --conf spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtensionUm die Spark-Shell auf früheren EMR-Versionen zu starten, verwenden Sie stattdessen den folgenden Befehl:
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 -
Verwenden Sie die folgenden Befehle, um den neuesten Snapshot der copy-on-write Tabellen abzufragen.
SELECT * FROMmy_hudi_cow_tablespark.read.table("my_hudi_cow_table") -
Um die neuesten komprimierten Daten von
MOR-Tabellen abzufragen, können Sie die leseoptimierte Tabelle mit dem Suffix_roabfragen:SELECT * FROMmy_hudi_mor_table_rospark.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.