category

Machine learningDatabaseCloudBase de DatosAplicación WebKuberneteseCommerce

Delta Lake o Hive en AWS – Tomar una decisión informada

Amazon S3 se ha convertido en la capa de almacenamiento de referencia para el análisis de big data en AWS. El reto está en decidir cómo añadir un motor de consultas y una capa de metadatos encima de esos datos para convertirlos en un verdadero almacén de datos.
Dos opciones populares son Delta Lake y Hive ejecutado en AWS EMR.

Ambos enfoques consultan datos almacenados en S3, pero difieren en garantías de transacción, manejo de esquemas, optimizaciones de rendimiento y encaje en el ecosistema.


Delta Lake en AWS S3

Delta Lake es un formato de almacenamiento de código abierto que añade transacciones ACID y evolución de esquemas a los data lakes. En AWS, a menudo se combina con Apache Spark ejecutado en EMR para procesar grandes volúmenes de datos almacenados en S3.

Cómo funciona en AWS:

  1. Almacenamiento de datos: Los archivos brutos o procesados (Parquet, JSON, CSV) se almacenan en un bucket S3.
    Ejemplo:

s3://my-data-lake/sales/2024/10/part-0001.snappy.parquet

  1. Formato Delta: Delta Lake mantiene un registro de transacciones (_delta_log) en la misma ruta de S3 para registrar cambios de esquema, adiciones y eliminaciones de datos.
  2. Ejecución de consultas: Spark en EMR lee tablas Delta directamente desde S3, aplicando validación de esquema, compactación y consultas con “time travel”.

Ventajas:

  • Transacciones ACID: Garantizan coherencia en lecturas/escrituras concurrentes.
  • Evolución de esquema: Permite agregar o modificar columnas sin reescribir todo el conjunto de datos.
  • Time Travel: Consultar versiones históricas de los datos.
  • Optimizaciones de rendimiento: Data skipping y compactación reducen los tiempos de lectura.

Hive en AWS EMR con S3 como almacén de datos

Hive es un framework de almacén de datos maduro, diseñado para análisis batch a gran escala. En AWS, Hive puede ejecutarse en EMR, con S3 como capa de almacenamiento subyacente.

Cómo funciona en AWS:

  1. Almacenamiento de datos: Las tablas se guardan como archivos en S3, normalmente en formato Parquet u ORC.
    Ejemplo:

s3://my-hive-warehouse/sales/year=2024/month=10/day=15/part-0001.orc

  1. Metadatos en Glue Data Catalog: AWS Glue almacena los esquemas de las tablas y la información de particiones que Hive utiliza para planificar las consultas.
  2. Ejecución de consultas: Hive en EMR ejecuta HQL (Hive Query Language) sobre los datos de S3, en modo batch (MapReduce o Tez) o interactivo a través de Hive LLAP.

Ventajas:

  • Familiaridad con SQL: HQL es muy similar a SQL ANSI, facilitando su uso por parte de analistas.
  • Integración con AWS: Conexión directa con S3, AWS Glue, Athena y Redshift Spectrum.
  • Particionado: Reduce el volumen de datos escaneados mediante partition pruning.
  • Eficiencia de costos: EMR se cobra por segundo de tiempo de ejecución, y los datos permanecen en S3.

Ejemplo: Guardar datos en S3 para consultas con Hive

Si tienes un trabajo de Spark que escribe en S3 para que Hive lo consuma:

# Ejemplo con PySpark
df.write \
 .mode("overwrite") \
 .format("parquet") \
 .partitionBy("year", "month", "day") \
 .save("s3://my-hive-warehouse/sales")

Registrar la tabla en Hive (a través de AWS Glue):

CREATE EXTERNAL TABLE sales (
    order_id STRING,
    amount DECIMAL(10,2),
    customer_id STRING
)
PARTITIONED BY (year INT, month INT, day INT)
STORED AS PARQUET
LOCATION 's3://my-hive-warehouse/sales';

Elegir entre Delta Lake y Hive en AWS

CaracterísticaDelta Lake en S3 + EMRHive en S3 + EMR
TransaccionesSoporte ACIDNinguno (consistencia eventual)
Evolución de esquemaLimitada
Lenguaje de consultaSpark SQLHQL (similar a SQL)
Consultas históricasSí (time travel)No
Ideal paraWorkloads streaming + batchAnalítica orientada a batch
Integración con AWSVía Spark en EMRNativa (Glue, Athena, Redshift)

Recomendaciones

  • Elige Delta Lake si necesitas streaming y batch en el mismo pipeline, cambios frecuentes de esquema o garantías ACID sobre S3.
  • Elige Hive en EMR si manejas análisis batch a gran escala y buscas integración nativa con AWS Glue, Athena y otros servicios de AWS, manteniendo un coste predecible.

Ambas opciones permiten almacenar datos brutos y procesados en S3 y consultarlos directamente, pero cada una se adapta a patrones operativos y analíticos diferentes.


Table of Contents


Trending

Orquestar Spark en AWS EMR con Apache Airflow — Enfoque Low-OpsEstudio de caso: Un sistema ligero de detección de intrusos con OpenFaaS y PyTorchCouchDB o AWS DynamoDBAirflow Migración y Limpieza de Datos de Bigtable a Snowflake con Airflow 2.9 en KubernetesApache Airflow 2.x en Kubernetes – Orquestación de datos lista para producción a escala Big Data