Apache Hudi y Lake Formation - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Apache Hudi y Lake Formation

EMRLas versiones 6.15.0 y posteriores de Amazon incluyen soporte para un control de acceso detallado basado en AWS Lake Formation con Apache Hudi cuando lees y escribes datos con Spark. SQL Amazon EMR admite el control de acceso a nivel de tabla, fila, columna y celda con Apache Hudi. Con esta función, puede ejecutar consultas de instantáneas en copy-on-write las tablas para consultar la última instantánea de la tabla en un instante de confirmación o compactación determinado.

Actualmente, un EMR clúster de Amazon habilitado para Lake Formation debe recuperar la columna de tiempo de confirmación de Hudi para realizar consultas incrementales y consultas de viajes en el tiempo. No es compatible con la timestamp as of sintaxis ni con la función de Spark. Spark.read() La sintaxis correcta esselect * from table where _hoodie_commit_time <= point_in_time. Para obtener más información, consulte la tabla Consultas sobre viajes en el tiempo puntuales en Hudi.

La siguiente matriz de compatibilidad enumera algunas de las características principales de Apache Hudi con Lake Formation:

Copiar al escribir fusionar al leer

Consultas instantáneas: Spark SQL

Consultas de lectura optimizada - Spark SQL

Consultas incrementales

Consultas de viaje en el tiempo

Tabla de metadatos

DMLINSERTcomandos

DDLcomandos

Consultas de orígenes de datos de Spark

Escrituras de orígenes de datos de Spark

Consulta de tablas de Hudi

En esta sección, se muestra cómo ejecutar las consultas compatibles descritas anteriormente en un clúster habilitado para Lake Formation. La tabla debe ser una tabla de catálogo registrada.

  1. Para iniciar el intérprete de comandos de Spark, utilice los siguientes comandos.

    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

    Si quieres que Lake Formation utilice el servidor de registros para gestionar tu catálogo de Spark, spark.sql.catalog.<managed_catalog_name>.lf.managed establézcalo en true.

  2. Para consultar la última instantánea de copy-on-write las tablas, usa los siguientes comandos.

    SELECT * FROM my_hudi_cow_table
    spark.read.table("my_hudi_cow_table")
  3. Para conocer los datos compactados más recientes de las tablas MOR, puede consultar la tabla optimizada para lectura que tiene el sufijo _ro:

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

El rendimiento de las lecturas en los clústeres de Lake Formation puede ser más lento debido a las optimizaciones que no se admiten. Estas características incluyen la lista de archivos basada en los metadatos de Hudi y la omisión de datos. Recomendamos probar el rendimiento de su aplicación para asegurarse de que cumple con los requisitos.