Todos os produtos
Search
Central de documentação

E-MapReduce:Conector Delta

Última atualização: Jun 27, 2026

O conector Delta permite consultar tabelas do Delta Lake diretamente no E-MapReduce (EMR) Trino. Ele oferece suporte a todos os recursos de código aberto do Delta Lake e adiciona capacidades aprimoradas, como time travel e aceleração de consultas baseada em Z-Ordering.

Informações básicas

O Delta Lake é uma solução de data lake desenvolvida pela Databricks que fornece recursos para gravar, gerenciar, consultar e ler dados em data lakes. Para obter mais informações, consulte Visão geral.

Pré-requisitos

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

  • Um cluster DataLake ou Custom com o serviço Trino ativado, ou um cluster Hadoop com o serviço Presto ativado

Para criar um cluster, consulte Criar um cluster.

Versões compatíveis

O conector Delta é compatível com:

  • Clusters Hadoop executando EMR V3.39.1, EMR V5.5.0 ou versão secundária posterior

  • Clusters DataLake e Custom (sem restrição de versão)

Configure o conector Delta

As configurações do conector Delta ficam na aba delta.properties, dentro da aba Configure do serviço Trino no console EMR. Para alterar essas configurações, siga as instruções em Modifique as configurações de um conector integrado.

Item de configuração

Descrição

hive.metastore.uri

URI para acessar o metastore do Hive via protocolo Thrift. Formato padrão: thrift://master-1-1.cluster-24****:9083

hive.config.resources

Caminho do arquivo de recursos usado pelo metastore do Hive

Consultar tabelas do Delta Lake

O Trino lê tabelas do Delta Lake, mas não pode criá-las nem modificá-las. Use o Spark SQL para criar tabelas e gravar dados. Para mais detalhes, consulte Usar o Delta Lake.

O exemplo a seguir mostra como criar uma tabela com Spark SQL e consultá-la posteriormente no Trino.

Etapa 1: Crie uma tabela e inserir dados

  1. Abra a CLI do Spark SQL:

    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;

Etapa 2: Consultar dados no Trino

  1. Faça login no console do Trino. Para obter instruções, consulte Fazer login no console do Trino executando comandos.

  2. Execute a consulta a seguir:

    SELECT * FROM delta_table;

    Saída esperada:

     id
    ----
      0
      1
      2
      3
      4
    (5 rows)

Recursos avançados

Importante

Os recursos abaixo são compatíveis apenas com as versões EMR V3.39.1 e EMR V5.5.0.

Time travel

O recurso de time travel permite consultar um snapshot histórico de uma tabela do Delta Lake por número de versão ou timestamp. O EMR Trino usa a sintaxe FOR ... AS OF:

-- Query by version number
SELECT * FROM <table> FOR VERSION AS OF <version>;

-- Query by timestamp
SELECT * FROM <table> FOR TIMESTAMP AS OF <timestamp>;
Importante

A sintaxe de time travel do EMR Trino inclui a palavra-chave FOR. Isso difere do Spark SQL de código aberto, que não usa FOR nessa sintaxe.

Consulta por versão

Os números de versão são inteiros que começam em 1 após o primeiro INSERT e incrementam em 1 a cada modificação.

O exemplo a seguir sobrescreve os dados da delta_table e consulta uma versão anterior usando time travel.

  1. Sobrescreva os dados no Spark SQL:

    INSERT OVERWRITE TABLE delta_table VALUES 5,6,7,8,9;
  2. Confirme o estado atual no Trino:

    SELECT * FROM delta_table;

    Saída:

     id
    ----
      5
      6
      7
      8
      9
    (5 rows)
  3. Consulte os dados conforme estavam na versão 1:

    SELECT * FROM delta_table FOR VERSION AS OF 1;

    Saída:

     id
    ----
      2
      1
      3
      4
      0
    (5 rows)

Consulta por timestamp

Há suporte para três tipos de timestamp: DATE, TIMESTAMP e TIMESTAMP WITH TIME ZONE.

  • Em consultas baseadas em timestamp do tipo DATE, o sistema retorna os dados cujo timestamp corresponde a 00:00:00 UTC na data da consulta.

  • Em consultas baseadas em timestamp do tipo TIMESTAMP, o sistema retorna os dados cujo timestamp em UTC corresponde ao valor especificado. Por exemplo, para consultar dados das 20:00:00 de 15 de fevereiro de 2022 (UTC+8) usando o tipo TIMESTAMP:

    Nota

    Na forma TIMESTAMP, a primeira palavra-chave TIMESTAMP especifica o modo de time travel, enquanto a segunda TIMESTAMP é a palavra-chave do tipo literal.

    SELECT * FROM delta_table FOR TIMESTAMP AS OF TIMESTAMP '2022-02-15 12:00:00';

    Saída retornada:

     id
    ----
      2
      0
      3
      4
      1
    (5 rows)
  • Se a consulta usar um timestamp do tipo TIMESTAMP WITH TIME ZONE, o tipo de dado será convertido implicitamente antes da leitura do snapshot:

    SELECT * FROM delta_table FOR TIMESTAMP AS OF CAST('2022-02-15 20:00:00 +0800' AS TIMESTAMP WITH TIME ZONE);

Z-Ordering

Z-Ordering é uma técnica de otimização de layout de dados que agrupa informações relacionadas no mesmo conjunto de arquivos. Há suporte para otimização de consultas baseada em Parquet e data skipping. Após aplicar o Z-Ordering, o Delta Lake coleta estatísticas de mínimo e máximo para cada coluna em nível de arquivo e as usa para ignorar arquivos irrelevantes durante as consultas. O conector Delta lê essas estatísticas, permitindo que o Trino ignore arquivos de dados e acelere as consultas em até dezenas de vezes.

Otimizar uma tabela

Execute o comando OPTIMIZE com ZORDER BY no Spark para regravar e ordenar os dados da tabela. O exemplo a seguir otimiza a tabela conn_zorder, que possui as colunas src_ip, src_port, dst_ip e dst_port:

OPTIMIZE conn_zorder ZORDER BY (src_ip, src_port, dst_ip, dst_port);
Importante

A ordem das colunas na cláusula ZORDER BY determina a prioridade do Z-Ordering. O tempo necessário para concluir uma operação OPTIMIZE varia conforme o volume de dados.

Tipos de coluna compatíveis

O Z-Ordering é compatível com os seguintes tipos de dados de coluna: INT, LONG, DOUBLE, FLOAT, BINARY, BOOLEAN, STRING e ARRAY.

Predicados compatíveis com data skipping

Ao consultar dados com Z-Ordering, o recurso de data skipping aplica filtragem em nível de arquivo para estes predicados: =, <, <=, > e >=.

Os predicados LIKE e IN não acionam o data skipping completo. No entanto, consultas que usam LIKE ou IN ainda podem se beneficiar da ordenação parcial quando as colunas com Z-Ordering restringem o intervalo de arquivos relevantes.

Exemplos de consulta

Após a otimização, as consultas que filtram por colunas com Z-Ordering apresentam desempenho significativamente superior:

-- Filter on a single Z-Ordered column
SELECT COUNT(*) FROM conn_zorder WHERE src_ip > '64.';

-- Filter on multiple Z-Ordered columns
SELECT COUNT(*) FROM conn_zorder WHERE src_ip >= '64.' AND dst_ip < '192.' AND src_port < 1000 AND dst_port > 50000;

Próximos passos