Todos los productos
Search
Centro de documentos

E-MapReduce:Conector de Delta

Última actualización: Sep 17, 2026

EMR Trino incluye un conector de Delta independiente que admite funciones integrales de data lake en los clústeres de E-MapReduce.

Contexto

Delta Lake es una solución de data lake de Databricks que ofrece funciones centradas en los datos para gestionar su ciclo de vida. Para obtener más información, consulte Overview of Delta Lake.

Requisitos previos

Cree uno de los siguientes tipos de clúster: un clúster DataLake o Custom con el servicio Trino, o bien un clúster Hadoop con el servicio Presto. Para obtener más información, consulte Create a cluster.

Limitaciones

El conector de Delta es compatible con los clústeres DataLake, Custom y Hadoop que ejecutan EMR-3.39.1 o versiones posteriores, o EMR-5.5.0 o versiones posteriores.

Uso básico

Modificar la configuración del conector

Para modificar la configuración del conector de Delta, consulte Modify the configurations of a built-in connector.

Configuración predeterminada del conector

En la consola de EMR, vaya a la página Configure del servicio Trino. En la sección Service Configuration, haga clic en la pestaña delta.properties. Agregue o modifique los parámetros según su entorno.

Parámetro

Descripción

hive.metastore.uri

URI para conectarse al metastore de Hive mediante el protocolo Thrift. El formato predeterminado es thrift://master-1-1.cluster-24****:9083.

hive.config.resources

Ubicación de los archivos de recursos que utiliza el metastore de Hive.

Ejemplo

Trino no puede crear ni modificar tablas de Delta Lake. Utilice Spark SQL para estas operaciones. Para obtener más información, consulte Basic usage.

  1. Genere los datos.

    1. Ejecute el siguiente comando para acceder a la línea de comandos de Spark SQL.

      spark-sql
    2. Ejecute la siguiente instrucción para crear una tabla de Delta Lake.

      CREATE TABLE delta_table (id INT) USING delta;
    3. Ejecute la siguiente instrucción para escribir datos en la tabla.

      INSERT INTO delta_table VALUES 0,1,2,3,4;
  2. Consulte los datos.

    1. Acceda a la línea de comandos de Trino. Para obtener más información, consulte Access Trino using a command-line interface.

    2. Ejecute la siguiente instrucción para consultar la tabla.

      SELECT * FROM delta_table;

      Se devuelve el siguiente resultado.

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

Uso avanzado

Importante

Las siguientes funciones son compatibles con EMR-3.39.1 o versiones posteriores, y con EMR-5.5.0 o versiones posteriores.

Time travel

La función time travel permite consultar los datos históricos de una tabla.

EMR Trino admite time travel para las tablas de Delta Lake. La sintaxis es FOR xxx AS OF, donde xxx puede ser VERSION o TIMESTAMP, lo que indica si la consulta se hace por número de versión o por marca de tiempo.

Importante

En comparación con la sintaxis de Spark SQL para Delta Lake, la sintaxis de time travel de Trino añade la palabra clave FOR.

Ejemplo:

  1. Ejecute el siguiente comando para acceder a la línea de comandos de Spark SQL.

    spark-sql
  2. Ejecute la siguiente instrucción para sobrescribir los datos.

    INSERT OVERWRITE TABLE delta_table VALUES 5,6,7,8,9;
  3. Consulte los datos.

    1. Acceda a la línea de comandos de Trino. Para obtener más información, consulte Access Trino using a command-line interface.

    2. Ejecute la siguiente instrucción para consultar la tabla.

      SELECT * FROM delta_table;

      Se devuelve el siguiente resultado.

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

    Ejecute la siguiente instrucción para consultar datos por número de versión. Este número es un entero que aumenta de forma monótona. De manera predeterminada, el número de versión es 1 después de la primera operación INSERT y se incrementa en 1 con cada modificación.

    SELECT * FROM delta_table FOR VERSION AS OF 1;

    Se devuelve el siguiente resultado.

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

    También puede consultar datos por marca de tiempo. Se admiten tres tipos de marcas de tiempo: DATE, TIMESTAMP y TIMESTAMP WITH TIME ZONE.

    • DATE: consulta los datos a las 00:00:00 UTC de la fecha especificada.

    • TIMESTAMP: consulta los datos en la marca de tiempo especificada, en UTC.

      Por ejemplo, ejecute la siguiente instrucción para consultar los datos de las 20:00:00 del 15 de febrero de 2022, hora de Pekín (UTC+08:00), con el tipo TIMESTAMP.

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

      En esta instrucción, la primera palabra clave TIMESTAMP establece el modo de time travel por marca de tiempo, en lugar del modo por número de versión. La segunda palabra clave TIMESTAMP convierte el literal de cadena al tipo de dato TIMESTAMP, no al tipo DATE.

      Se devuelve el siguiente resultado.

       id
      ----
        2
        0
        3
        4
        1
      (5 rows)
    • TIMESTAMP WITH TIME ZONE: para consultar con TIMESTAMP WITH TIME ZONE se requiere una conversión de tipo.

      Por ejemplo, para consultar los datos de las 20:00:00 del 15 de febrero de 2022, hora de Pekín (UTC+08:00), utilice la siguiente instrucción.

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

Z-order

Trino utiliza Z-Ordering para optimizar las consultas en tablas de Delta Lake. Para ello, aprovecha las optimizaciones nativas de Parquet y el salto de datos (data skipping). Tras la optimización, Delta Lake recopila estadísticas por archivo, como los valores mínimo y máximo de cada columna. El conector de Delta usa estas estadísticas para filtrar directamente los archivos de datos.

En las tablas de Delta Lake optimizadas con los comandos OPTIMIZE y ZORDER BY, configurar correctamente las columnas de Z-Ordering acelera las consultas de Trino decenas de veces.

Trino admite Z-Ordering para los siguientes tipos de datos: Int, Long, Double, Float, Binary, Boolean, String y Array.

Trino admite los siguientes predicados para el salto de datos con Z-Ordering: =, <, <=, > y >=.

Nota

Actualmente, Trino no admite predicados como like ni in. Sin embargo, dado que Z-Ordering preserva la localidad de los datos, las consultas que usan estos predicados pueden ejecutarse más rápido después de la optimización.

Por ejemplo, considere una tabla llamada conn_zorder con cuatro columnas: src_ip, src_port, dst_ip y dst_port.

Primero, ejecute la siguiente instrucción de optimización en Spark:

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

El orden de las columnas dentro de los paréntesis define el Z-Ordering.

La operación OPTIMIZE puede tardar cierto tiempo, según el volumen de datos. Una vez finalizada, todas las consultas que usen estas condiciones de filtro se ejecutarán más rápido.

  • Consultar un subconjunto de las columnas con Z-Ordering mejora el rendimiento. Por ejemplo:

    SELECT COUNT(*) FROM conn_zorder WHERE src_ip > '64.';
  • Consultar respetando la secuencia de Z-Ordering aumenta significativamente la velocidad de ejecución. Por ejemplo:

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