Curaduría open-source · Python-first · en español

El catálogo

Nº12 · Almacenamiento

Delta Lake

Tablas con garantías ACID y time travel sobre tu data lake.

FormatoIntermedioData Engineer

Delta Lake es un formato de tabla open-source que añade transacciones ACID, evolución de esquema y time travel sobre archivos Parquet en un data lake. Es una de las bases del patrón lakehouse (tablas confiables sobre object storage): lo popularizó Databricks, pero es OSS y corre también fuera de su nube.

¿Qué es?

Delta Lake no inventa un formato de datos nuevo: guarda tus datos en Parquet y añade junto a ellos un transaction log (el directorio _delta_log) que registra cada cambio como un commit ordenado. Ese log es la pieza clave — convierte una carpeta de archivos en una tabla con comportamiento de base de datos:

  • ACID — commits atómicos; ninguna lectura ve un estado a medias.
  • Updates, deletes y merge — modifica filas sobre object storage, no solo append.
  • Schema evolution — agrega o ajusta columnas sin reescribir lo histórico.
  • Time travel — consulta la tabla en una versión o timestamp anterior.

¿Para qué sirve?

  • Tablas confiables sobre object storage. Pipelines que escriben en S3/GCS/ADLS con garantías ACID en lugar de archivos sueltos frágiles.
  • Updates, deletes y merge. Aplica cambios incrementales o upserts (CDC) sobre datos que en Parquet plano serían inmutables.
  • Time travel. Recupera el estado exacto de una tabla en un punto anterior para auditoría, reproducibilidad o rollback.
  • Base de un lakehouse. El cimiento de tablas analíticas confiables que múltiples cargas (ETL, BI, ML) comparten sin duplicar datos.

¿Cuándo usarla / cuándo no?

Úsala cuando:

  • Necesitas ACID, updates/deletes/merge y time travel sobre un data lake.
  • Tu stack vive en el mundo Spark/Databricks, donde Delta es la opción más nativa y madura.

Piénsalo dos veces cuando:

  • El dataset es chico y lo lee un solo proceso — un Parquet plano es más simple y suficiente.
  • Tu ecosistema es multi-motor o más neutral: Iceberg resuelve casi lo mismo (ACID, schema evolution, time travel) y suele integrarse mejor fuera de Spark. La diferencia real entre Delta e Iceberg no son las features sino el ecosistema: elige Delta si gravitas hacia Spark/Databricks, Iceberg si quieres neutralidad multi-motor (Trino, Flink, DuckDB).

Empieza en 1 minuto

Crea y lee una tabla Delta en local con delta-rs (sin clúster Spark), desde pandas:

pip install deltalake pandas
import pandas as pd
from deltalake import write_deltalake, DeltaTable

# Escribe un DataFrame como tabla Delta en una carpeta local
df = pd.DataFrame({
    "id": [1, 2, 3],
    "evento": ["login", "compra", "logout"],
})
write_deltalake("/tmp/delta_eventos", df)

# Léela de vuelta
dt = DeltaTable("/tmp/delta_eventos")
print(dt.to_pandas())

# Agrega más datos (otro commit en el log)
mas = pd.DataFrame({"id": [4], "evento": ["refund"]})
write_deltalake("/tmp/delta_eventos", mas, mode="append")

# Time travel: lee la versión 0 (antes del append)
print(DeltaTable("/tmp/delta_eventos", version=0).to_pandas())

Trivia rápida — pon a prueba lo que acabas de leer.

¿Qué tanto sabes de Delta Lake?

Documentación oficial

La fuente de verdad vive ahí. Acá orientamos; la profundidad la pones tú.

Abrir documentación oficial

Qué aprender después

Ver también

Nº12 · Actualizado 2026-06-26