Todos los productos
Search
Centro de documentos

E-MapReduce:Conector de Hudi

Última actualización: Sep 18, 2026

Hudi es un framework de data lake que permite actualizar y eliminar datos en sistemas de archivos compatibles con Hadoop, así como consumir los datos modificados. Presto de E-MapReduce (EMR) integra los paquetes JAR correspondientes en un plugin independiente de Hudi. Con el conector de Hudi de EMR, usted puede consultar tablas Copy on Write (COW) y Merge on Read (MOR).

Contexto

Para obtener más información sobre Hudi de EMR, consulte Hudi overview.

Requisitos previos

Se requiere un clúster de Hadoop que incluya el servicio Presto o bien un clúster independiente de Presto. Para más detalles, consulte Create a cluster.

Límites

  • El conector de Hudi solo es compatible con clústeres de Hadoop o Presto de EMR V3.38.0 o versiones posteriores.

  • En las tablas COW, únicamente se admiten consultas de instantánea.

  • Para las tablas MOR, están disponibles las consultas de instantánea y las consultas optimizadas para lectura.

  • No se admiten consultas incrementales.

Configurar el conector de Hudi

Modifique la configuración del conector de Hudi. Para más información, consulte Modify a built-in connector.

Para consultar la configuración predeterminada del conector de Hudi, vaya a la página del servicio Presto en la consola de EMR. En la pestaña

Configure

, busque la sección

Service Configuration

y haga clic en la pestaña

hudi.properties

. A continuación se describen los parámetros. Modifique sus valores según sus necesidades de negocio.

Parámetro Descripción
hive.recursive-directories Habilita la lectura de datos desde subdirectorios de las ubicaciones de tablas o particiones. Es similar a la propiedad hive.mapred.supports.subdirectories de Hive.
hive.metastore.uri URI para conectarse a Hive Metastore mediante el protocolo Thrift.

El valor predeterminado tiene el formato thrift://<master-node-name>.cluster-24****:9083.

hive.config.resources Lista de archivos de configuración de HDFS separados por comas. Estos archivos deben existir en todos los hosts de Presto.
Importante Configure este parámetro únicamente cuando se requiera acceso a HDFS.
hive.delta-table-enabled Indica si Presto puede leer tablas de Delta Lake. Los valores válidos son:
  • true (predeterminado): Presto puede leer tablas de Delta Lake.
  • false: Presto no puede leer tablas de Delta Lake.
hive.delta-compatible-mode-enabled Determina si se habilita el modo de compatibilidad para las tablas de Delta Lake. Los valores válidos son:
  • true (predeterminado): el modo de compatibilidad está habilitado para las tablas de Delta Lake.
  • false: el modo de compatibilidad no está habilitado para las tablas de Delta Lake.
hive.hdfs.impersonation.enabled Especifica si se habilita la suplantación de usuarios. Los valores válidos son:
  • true: la suplantación de usuarios está habilitada.
  • false (predeterminado): la suplantación de usuarios no está habilitada.

Ejemplo

Las tablas de Hudi se pueden almacenar como tablas externas de Hive. Mediante el conector de Hive, usted puede consultar los datos de dichas tablas. Para conocer el procedimiento de creación de tablas de Hudi y su sincronización con tablas de Hive, consulte Integrate Hudi with Spark SQL y Write data to Hudi by using Spark.

A continuación se muestra cómo generar y consultar datos:

  1. Inicie sesión en el clúster de EMR mediante SSH. Para más información, consulte Log on to a cluster.

  2. Ejecute el siguiente comando para abrir la CLI de Spark SQL:

    spark-sql --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \
    --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension'

    Si la salida contiene la siguiente información, la CLI de Spark SQL se abrió correctamente:

    spark-sql>
  3. Ejecute el siguiente comando para crear una tabla de prueba llamada emr_test:

    create table if not exists emr_test(
      id bigint,
      name string,
      price double
    ) using hudi
    options (
      type = 'mor',
      primaryKey = 'id,name'
    );
  4. Ejecute los siguientes comandos para insertar datos de prueba:

    insert into emr_test select 1, 'a2', 10;
    insert into emr_test select 1, 'a1', 10;
    insert into emr_test select 2, 'a1', 20;
    Nota

    Spark SQL de EMR sincroniza automáticamente los datos de Hudi con Data Lake Formation (DLF) o con Hive Metastore.

  5. Consulte los datos en el cliente de Presto.

    1. Ejecute el siguiente comando para abrir el cliente de Presto:

      presto --server emr-header-1:9090 --catalog hudi --schema default --user hadoop
    2. Ejecute el siguiente comando para consultar la tabla:

      select * from emr_test;

      Se obtiene la siguiente salida:

       _hoodie_commit_time | _hoodie_commit_seqno | _hoodie_record_key | _hoodie_partition_path |                            _hoodie_file_name                            | id | name | price
      ---------------------+----------------------+--------------------+------------------------+-------------------------------------------------------------------------+----+------+-------
       20211025145616      | 20211025145616_0_1   | id:1,name:a2       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-20-1604_20211025145616.parquet |  1 | a2   |  10.0
       20211025145629      | 20211025145629_0_1   | id:1,name:a1       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-48-3211_20211025145629.parquet |  1 | a1   |  10.0
       20211025145640      | 20211025145640_0_2   | id:2,name:a1       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-76-4818_20211025145640.parquet |  2 | a1   |  20.0
      (3 rows)
  6. Actualice los datos en la CLI de Spark SQL.

    1. Ejecute el siguiente comando para abrir la CLI de Spark SQL:

      spark-sql --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \
      --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension'

      Si la salida contiene la siguiente información, la CLI de Spark SQL se abrió correctamente:

      spark-sql>
    2. Ejecute el siguiente comando para actualizar el valor de price en la fila cuyo id es 2:

      update emr_test set price = price + 20 where id = 2;
  7. Una vez completada la actualización, consulte los datos en el cliente de Presto.

    1. Ejecute el siguiente comando para abrir el cliente de Presto:

      presto --server emr-header-1:9090 --catalog hudi --schema default --user hadoop
    2. Ejecute el siguiente comando para consultar la tabla:

      select * from emr_test;

      Se obtiene la siguiente salida:

       _hoodie_commit_time | _hoodie_commit_seqno | _hoodie_record_key | _hoodie_partition_path |                            _hoodie_file_name                            | id | name | price
      ---------------------+----------------------+--------------------+------------------------+-------------------------------------------------------------------------+----+------+-------
       20211025145616      | 20211025145616_0_1   | id:1,name:a2       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-20-1604_20211025145616.parquet |  1 | a2   |  10.0
       20211025145629      | 20211025145629_0_1   | id:1,name:a1       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-48-3211_20211025145629.parquet |  1 | a1   |  10.0
       20211025145640      | 20211025145640_0_2   | id:2,name:a1       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-76-4818_20211025145640.parquet |  2 | a1   |  40.0
      (3 rows)