Todos os produtos
Search
Central de documentação

E-MapReduce:Conector Delta

Última atualização: Sep 17, 2026

O EMR Trino oferece um conector Delta independente com suporte a recursos abrangentes de data lake em clusters E-MapReduce.

Informações básicas

O Delta Lake é uma solução de data lake da Databricks que fornece recursos centrados em dados para gerenciar o ciclo de vida dos dados. Para obter mais informações, consulte Overview of Delta Lake.

Pré-requisitos

Crie um dos seguintes tipos de cluster: DataLake ou Custom com o service Trino, ou Hadoop com o service Presto. Para obter mais informações, consulte Create a cluster.

Limitações

O conector Delta tem suporte em clusters DataLake, Custom e Hadoop que executam o EMR-3.39.1 ou posterior, ou o EMR-5.5.0 ou posterior.

Uso básico

Modifique a configuração do conector

Para modificar a configuração do conector Delta, consulte Modify the configurations of a built-in connector.

Configuração padrão do conector

No console EMR, acesse a página Configure do service Trino. Na seção Service Configuration, clique em delta.properties. Adicione ou modifique parâmetros conforme o seu ambiente.

Parâmetro

Descrição

hive.metastore.uri

URI para conexão com o metastore do Hive via protocolo Thrift. O formato padrão é thrift://master-1-1.cluster-24****:9083.

hive.config.resources

Localização dos arquivos de resource usados pelo metastore do Hive.

Exemplo

O Trino não cria nem modifica tabelas do Delta Lake. Utilize o Spark SQL para essas operações. Para obter mais informações, consulte Basic usage.

  1. Gere os dados.

    1. Execute o comando a seguir para acessar a linha de comando do Spark SQL.

      spark-sql
    2. Execute a instrução a seguir para criar uma tabela do Delta Lake.

      CREATE TABLE delta_table (id INT) USING delta;
    3. Execute a instrução a seguir para gravar dados na tabela.

      INSERT INTO delta_table VALUES 0,1,2,3,4;
  2. Consulte os dados.

    1. Acesse a linha de comando do Trino. Para obter mais informações, consulte Access Trino using a command-line interface.

    2. Execute a instrução a seguir para consultar a tabela.

      SELECT * FROM delta_table;

      O sistema retorna a seguinte saída:

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

Uso avançado

Importante

Os recursos a seguir têm suporte no EMR-3.39.1 ou posterior, ou no EMR-5.5.0 ou posterior.

Time travel

O recurso time travel permite consultar dados históricos de uma tabela.

O EMR Trino oferece suporte a time travel para tabelas do Delta Lake. A sintaxe é FOR xxx AS OF, onde xxx pode ser VERSION ou TIMESTAMP, indicando se a consulta ocorre por número de versão ou por timestamp.

Importante

Em comparação com a sintaxe do Spark SQL para Delta Lake, a sintaxe de time travel do Trino adiciona a palavra-chave FOR.

Exemplo:

  1. Execute o comando a seguir para acessar a linha de comando do Spark SQL.

    spark-sql
  2. Execute a instrução a seguir para sobrescrever os dados.

    INSERT OVERWRITE TABLE delta_table VALUES 5,6,7,8,9;
  3. Consulte os dados.

    1. Acesse a linha de comando do Trino. Para obter mais informações, consulte Access Trino using a command-line interface.

    2. Execute a instrução a seguir para consultar a tabela.

      SELECT * FROM delta_table;

      O sistema retorna a seguinte saída:

       id
      ----
        5
        6
        7
        8
        9
      (5 rows)
  4. Use time travel para consultar dados históricos.

    Execute a instrução a seguir para consultar dados por número de versão. O número de versão é um inteiro monotonicamente crescente. Por padrão, esse valor é 1 após a primeira operação INSERT e aumenta em 1 a cada modificação.

    SELECT * FROM delta_table FOR VERSION AS OF 1;

    O sistema retorna a seguinte saída:

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

    Também é possível consultar dados por timestamp. Há suporte a três tipos de timestamp: DATE, TIMESTAMP e TIMESTAMP WITH TIME ZONE.

    • DATE: Consulta dados às 00:00:00 UTC na data especificada.

    • TIMESTAMP: Consulta dados no timestamp especificado em UTC.

      Por exemplo, execute a instrução a seguir para consultar dados às 20:00:00 de 15 de fevereiro de 2022, no horário de Pequim (UTC+08:00), usando o tipo TIMESTAMP.

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

      Nesta instrução, a primeira palavra-chave TIMESTAMP define o modo de time travel como timestamp (não o modo de número de versão). A segunda palavra-chave TIMESTAMP converte o literal de string para o tipo de dados TIMESTAMP (não o tipo DATE).

      O sistema retorna a seguinte saída:

       id
      ----
        2
        0
        3
        4
        1
      (5 rows)
    • TIMESTAMP WITH TIME ZONE: Consultas com TIMESTAMP WITH TIME ZONE exigem conversão de tipo.

      Por exemplo, para consultar dados às 20:00:00 de 15 de fevereiro de 2022, no horário de Pequim (UTC+08:00), use a instrução a seguir.

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

Z-order

O Trino usa Z-Ordering para otimizar consultas em tabelas do Delta Lake ao aproveitar as otimizações nativas do Parquet e o data skipping. Após a otimização, o Delta Lake coleta estatísticas no nível de arquivo, como valores mínimos e máximos de cada coluna. O conector Delta utiliza essas informações para filtrar arquivos de dados diretamente.

Colunas de Z-Ordering configuradas adequadamente podem tornar as consultas do Trino dezenas de vezes mais rápidas em tabelas do Delta Lake otimizadas com os comandos OPTIMIZE e ZORDER BY.

O Trino oferece suporte a Z-Ordering para os seguintes tipos de dados: Int, Long, Double, Float, Binary, Boolean, String e Array.

O Trino aceita os seguintes predicados para data skipping com Z-Ordering: =, <, <=, > e >=.

Nota

Atualmente, o Trino não aceita predicados como like e in. No entanto, devido à natureza de preservação de localidade do Z-Ordering, consultas que usam esses predicados ainda podem apresentar execução mais rápida após a otimização com Z-Ordering.

Por exemplo, considere uma tabela chamada conn_zorder com quatro colunas: src_ip, src_port, dst_ip e dst_port.

Primeiro, execute a seguinte instrução de otimização no Spark:

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

A ordem das colunas entre parênteses define o Z-Ordering.

A operação OPTIMIZE pode levar algum tempo dependendo do volume de dados. Após a otimização, todas as consultas que usam essas condições de filtro terão execução mais rápida.

  • A consulta a um subconjunto das colunas com Z-Ordering melhora o desempenho. Por exemplo:

    SELECT COUNT(*) FROM conn_zorder WHERE src_ip > '64.';
  • A consulta baseada na sequência de Z-Ordering aumenta significativamente a velocidade da consulta. Por exemplo:

    SELECT COUNT(*) FROM conn_zorder WHERE src_ip >= '64.' AND dst_ip < '192.' AND src_port < 1000 AND dst_port > 50000;