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
Las EMR versiones 6.15.0 y posteriores de Amazon incluyen soporte para un control de acceso detallado basado en Apache Hudi al leer y escribir datos AWS Lake Formation 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 |
✓ |
✓ |
DML |
✓ |
✓ |
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.
-
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. -
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
") -
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
_rospark.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.