Todos os produtos
Search
Central de documentação

E-MapReduce:Acesse dados do Delta Lake e Hudi a partir do Hive

Última atualização: Jun 27, 2026

O Hive não grava dados no Delta Lake ou Apache Hudi, mas consulta ambos os formatos por meio de tabelas externas. Este tópico descreve como usar o Hive em um cluster E-MapReduce (EMR) para consultar dados do Delta Lake e do Hudi.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Um cluster com os serviços Hive, Delta Lake e Hudi instalados. Para mais informações, consulte Criar um cluster.

  • Conexão estabelecida com o cluster. Para mais informações, consulte Fazer logon em um cluster.

Limitações

Para ler dados do Hudi com o Hive, o cluster deve atender aos seguintes requisitos de versão.

Versão do EMR

Acesso do Hive ao Hudi

V3.36.0 e versões menores posteriores

Suportado

V5.2.0 e versões menores posteriores

Suportado

Versões anteriores

Não suportado. Use Spark ou Flink para consultar dados do Hudi.

Consulte dados do Delta Lake usando o Hive

O Hive lê tabelas do Delta Lake criadas no Spark. Os passos a seguir orientam na criação de uma tabela do Delta Lake no Spark, na inserção de dados e na consulta desses dados pelo Hive.

Passo 1: Crie uma tabela do Delta Lake no Spark

  1. Abra a CLI do Spark.

    spark-sql
  2. Crie uma tabela do Delta Lake chamada delta_table.

    create table delta_table (id int) using delta;
  3. Insira dados na tabela.

    insert into delta_table values 0,1,2,3,4;
  4. Verifique os dados consultando a tabela no Spark.

    select * from delta_table;

    A saída é semelhante a:

    2
    3
    4
    0
    1
    Time taken: 1.847 seconds, Fetched 5 row(s)

Passo 2: Consulte dados do Delta Lake no Hive

  1. Abra a CLI do Hive.

    hive
  2. (Opcional) Inspecione os metadados da tabela.

    desc formatted delta_table;
  3. Consulte a tabela do Delta Lake.

    select * from delta_table;

    A saída é semelhante a:

    OK
    2
    3
    4
    0
    1
    Time taken: 1.897 seconds, Fetched: 5 row(s)

    Os dados retornados pelo Hive correspondem aos da tabela do Delta Lake no Spark, confirmando que o Hive lê corretamente os dados do Delta Lake.

Consulte dados do Hudi usando o Hive

Importante

Apenas Spark ou Flink gravam dados no Hudi. O Hive oferece suporte apenas a acesso de leitura.

Passo 1: Prepare dados do Hudi usando o Spark

Antes de consultar pelo Hive, crie e popule uma tabela Hudi usando o Spark SQL.

Inicie o Spark SQL

O comando de inicialização depende das versões do Spark e do Hudi no cluster.

  • Para Spark 2 ou Spark 3 com Hudi anterior à versão 0,11:

    spark-sql \
    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \
    --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension'
  • Para Spark 3 com Hudi 0,11 ou posterior:

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

Crie e popule uma tabela Hudi

  1. Crie uma tabela Hudi chamada h0.

    create table h0 (
      id bigint,
      name string,
      price double,
      ts long
    ) using hudi
    tblproperties (
      primaryKey="id",
      preCombineField="ts"
    );
  2. Inspecione o esquema da tabela.

    desc formatted h0;

    A saída é semelhante a:

    _hoodie_commit_time     string
    _hoodie_commit_seqno    string
    _hoodie_record_key      string
    _hoodie_partition_path    string
    _hoodie_file_name       string
    id                      bigint
    name                    string
    price                   double
    ts                      bigint

    O Hudi adiciona automaticamente cinco campos de metadados a cada tabela: _hoodie_commit_time, _hoodie_commit_seqno, _hoodie_record_key, _hoodie_partition_path e _hoodie_file_name. Esses campos aparecem em todos os resultados de consulta que usam select *.

  3. Insira, atualize e exclua dados.

    -- insert
    insert into h0 values (1, 'a1', 10, 1000), (2, 'a2', 11, 1000);
    
    -- update
    update h0 set name = 'a1_new' where id = 1;
    
    -- delete
    delete from h0 where id = 1;
  4. Verifique os dados. Após as operações de atualização e exclusão, apenas a linha id=2 permanece.

    Nota

    Como h0 é uma tabela não particionada, _hoodie_partition_path está vazio. Os primeiros cinco valores na saída correspondem aos cinco campos de metadados do Hudi.

    select id, name, price, ts from h0;

    A saída é semelhante a:

    2    a2    11.0    1000

    Para incluir os campos de metadados do Hudi no resultado, execute:

    select * from h0;

    A saída é semelhante a:

    4.820221130150621338    20221130150621338_0_1    id:2        40d6507e-0579-42ce-a10f-c5e07a3981e5-0_0-29-2007_2022113015062****.parquet    2    a2    11.0    1000

Para mais exemplos de Spark para Hudi, consulte o Guia do Spark.

Passo 2: Consulte dados do Hudi no Hive

Abra a CLI do Hive ou conecte-se via Beeline ao Hive ThriftServer e execute uma consulta na tabela Hudi.

-- select
select * from h0;

Próximos passos