Todos os produtos
Search
Central de documentação

E-MapReduce:Conector Hudi

Última atualização: Jun 27, 2026

O Hudi é um framework de data lake que permite atualizar e excluir dados em sistemas de arquivos compatíveis com Hadoop, além de consumir dados alterados. O Trino do E-MapReduce (EMR) integra os pacotes JAR relacionados ao componente independente do Hudi. Use o conector Hudi do EMR para consultar dados em tabelas Copy on Write e Merge on Read.

Informações básicas

Para obter mais informações sobre o Hudi no EMR, consulte Hudi.

Pré-requisitos

Crie um cluster DataLake ou Hadoop e selecione o serviço Presto. Para obter instruções, consulte Criar cluster.

Limites

  • Somente clusters DataLake (todas as versões) e clusters Hadoop do EMR V3.38.0 ou posterior suportam o conector Hudi.

  • Em tabelas Copy on Write, o conector Hudi consulta apenas snapshots.

  • Em tabelas Merge on Read, o conector Hudi consulta snapshots e resultados de otimização de leitura apenas em cenários específicos. Tenha cautela ao usar o conector Hudi para consultas em ambiente de produção.

  • Não há suporte a consultas incrementais.

Configure o conector Hudi

Modifique as configurações do conector Hudi. Para mais detalhes, consulte Modificar as configurações de um conector integrado.

Usar metadados do Hive

Para visualizar as configurações padrão do conector Hudi, siga estas etapas: no console EMR, acesse a aba Configure da página do serviço Trino. Na aba Configure, clique em hudi.properties. Modifique os parâmetros descritos na tabela a seguir conforme suas necessidades de negócio.

Parâmetro

Descrição

hive.metastore.uri

Uniform Resource Identifier (URI) usado para acessar o metastore do Hive via protocolo Thrift.

  • Clusters DataLake e personalizados: defina este parâmetro com o formato thrift://master-1-1.cluster-24****:9083.

  • Clusters Hadoop: defina este parâmetro com o formato thrift://emr-header-1.cluster-24****:9083.

hive.config.resources

Arquivos de configuração do Hadoop Distributed File System (HDFS). Separe os nomes dos arquivos de configuração com vírgulas (,). Certifique-se de que os arquivos existam em todos os hosts onde o Trino está em execução.

Importante

A configuração deste parâmetro é obrigatória para acessar o HDFS.

  • Clusters DataLake e personalizados: o valor padrão é /etc/emr/hadoop-conf/core-site.xml,/etc/emr/hadoop-conf/hdfs-site.xml.

  • Clusters Hadoop: o valor padrão é /etc/ecm/hadoop-conf/core-site.xml, /etc/ecm/hadoop-conf/hdfs-site.xml.

hive.hdfs.impersonation.enabled

Define se a representação de usuário deve ser ativada. Valores válidos:

  • true: ativa a representação de usuário. Este é o valor padrão.

  • false: desativa a representação de usuário.

Usar metadados unificados do DLF

Se os metadados da tabela utilizarem DLF Unified Metadata, configure adicionalmente conectores como Hive, Iceberg e Hudi. Nesse cenário, as consultas deixam de depender do cluster de dados. O valor de hive.metastore.uri é ignorado, pois o Trino acessa diretamente os metadados do DLF na mesma conta.

A tabela a seguir descreve os parâmetros usados para configurar um centro de armazenamento de metadados para dados em data lakes.

ParâmetroDescriçãoObservações
hive.metastoreTipo do metastore do Hive. Este parâmetro é fixo como DLF.
dlf.catalog.regionID da região onde o Data Lake Formation (DLF) está ativado. Para mais informações, consulte Regiões e endpoints suportados.
Nota Certifique-se de que o valor deste parâmetro corresponda ao endpoint especificado pelo parâmetro dlf.catalog.endpoint.
dlf.catalog.endpointEndpoint do serviço DLF. Para mais informações, consulte Regiões e endpoints suportados.
Recomendamos definir o parâmetro dlf.catalog.endpoint como um endpoint de VPC do DLF. Por exemplo, se selecionar a região China (Hangzhou), defina o parâmetro dlf.catalog.endpoint como dlf-vpc.cn-hangzhou.aliyuncs.com.
Nota Também é possível usar um endpoint público do DLF. Se selecionar a região China (Hangzhou), defina o parâmetro dlf.catalog.endpoint como dlf.cn-hangzhou.aliyuncs.com.
dlf.catalog.akModeModo AccessKey do serviço DLF. Recomendamos definir este parâmetro como EMR_AUTO.
dlf.catalog.proxyModeModo proxy do serviço DLF. Recomendamos definir este parâmetro como DLF_ONLY.
dlf.catalog.uidID da sua conta Alibaba Cloud. Para obter o ID da sua conta Alibaba Cloud, acesse a página Security Settings.

Exemplo

As tabelas Hudi funcionam como tabelas externas do Hive. Use o conector Hive para consultar dados nessas tabelas. Para saber mais sobre como criar uma tabela Hudi e sincronizar dados dela para uma tabela Hive, consulte Integrar Hudi com Spark SQL e Uso básico.

Exemplo de criação de tabela e consulta de dados:

  1. Faça login no cluster via SSH. Para mais informações, consulte Fazer login em um cluster.

  2. Execute o comando a seguir para iniciar a CLI do Spark SQL:

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

    Se a saída contiver as informações a seguir, a CLI do Spark SQL foi iniciada:

    spark-sql>
  3. Execute o comando a seguir para criar uma tabela de teste chamada emr_test:

    create table if not exists emr_test(
      id bigint,
      name string,
      price double
    ) using hudi
    options (
      type = 'mor',
      primaryKey = 'id,name'
    );
  4. Execute os comandos a seguir para inserir dados de teste na tabela emr_test:

    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

    O Spark SQL do EMR sincroniza automaticamente os dados das tabelas Hudi com o metastore do Hive ou com o DLF.

  5. Consulte os dados no cliente Trino.

    1. Execute o comando a seguir para abrir a CLI do Trino:

      trino --server master-1-1:9090 --catalog hudi --schema default --user hadoop
    2. Execute o comando a seguir para consultar dados na tabela emr_test:

      select * from emr_test;

      Saída retornada:

       _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. Atualize os dados na CLI do Spark SQL.

    1. Execute o comando a seguir para iniciar a CLI do Spark SQL:

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

      Se a saída contiver as informações a seguir, a CLI do Spark SQL foi iniciada:

      spark-sql>
    2. Execute o comando a seguir para atualizar o valor de price da entrada de dados cujo ID é 2:

      update emr_test set price = price + 20 where id = 2;
  7. Após concluir a atualização, consulte os dados no cliente Trino.

    1. Execute o comando a seguir para abrir a CLI do Trino:

      trino --server master-1-1:9090 --catalog hudi --schema default --user hadoop
    2. Execute o comando a seguir para consultar dados na tabela emr_test:

      select * from emr_test;

      Saída retornada:

       _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)