Apache Hudi con controllo granulare degli accessi - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Apache Hudi con controllo granulare degli accessi

Le versioni 6.15.0 e successive di Amazon EMR includono il supporto per il controllo granulare degli accessi basato su Apache Hudi durante la lettura e la scrittura di dati AWS Lake Formation con Spark SQL. Amazon EMR supporta il controllo degli accessi a livello di tabella, riga, colonna e cella con Apache Hudi. Con questa funzionalità, puoi eseguire query istantanee sulle copy-on-write tabelle per interrogare l'istantanea più recente della tabella in un determinato commit o istante di compattazione.

Attualmente, un cluster Amazon EMR abilitato a Lake Formation deve recuperare la colonna del tempo di commit di Hudi per eseguire query incrementali e query sui viaggi nel tempo. Non supporta la sintassi e la funzione di Spark. timestamp as of Spark.read() La sintassi corretta è. select * from table where _hoodie_commit_time <= point_in_time Per ulteriori informazioni, consulta Point in time Time-Travel queries sulla tabella Hudi.

La seguente matrice di supporto elenca alcune funzioni principali di Apache Hudi con Lake Formation:

Copia su scrittura unisci in lettura

Query snapshot: Spark SQL

Query ottimizzate per la lettura: Spark SQL

Query incrementali

Query temporali

Tabelle dei metadati

Comandi INSERT DML

Comandi DDL

Query su origini dati Spark

Scritture di origini dati Spark

Esecuzione di query per tabelle Hudi

Questa sezione mostra come eseguire le query supportate sopra descritte su un cluster abilitato per Lake Formation. La tabella deve essere una tabella di catalogo registrata.

  1. Per avviare la shell Spark su EMR 7.10 o versioni successive, usa il seguente comando:

    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.HoodieSparkSessionExtension

    Per avviare la shell Spark nelle versioni precedenti di EMR, usa invece il comando seguente:

    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
  2. Per interrogare l'ultima istantanea delle copy-on-write tabelle, usa i seguenti comandi.

    SELECT * FROM my_hudi_cow_table
    spark.read.table("my_hudi_cow_table")
  3. Per eseguire query sui dati compatti più recenti delle tabelle MOR, puoi eseguire query sulla tabella ottimizzata per la lettura che presenta il suffisso con _ro:

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

Le prestazioni delle letture possono essere più lente nei cluster Lake Formation a causa di ottimizzazioni non supportate. Queste funzioni includono l'elenco dei file basato sui metadati Hudi e i dati ignorati. È preferibile testare le prestazioni dell'applicazione per accertarsi che soddisfi i requisiti.