Volver al curso

Data Engineering con Python: Pipelines y Big Data

leccion
8 / 12
advanced
32 horas
Big Data: Procesamiento Distribuido con Spark

Data Lakes y Arquitectura Lakehouse: Delta Lake e Iceberg

Lectura
45 min~1 min lectura

Data Lakes: Almacenamiento Flexible a Cualquier Escala

Un Data Lake almacena datos en su formato original a cualquier escala. A diferencia de un Data Warehouse que requiere esquemas previos, un Data Lake acepta todo y permite definir estructura al consultar (schema-on-read).

CaracteristicaData LakeData WarehouseLakehouse
FormatoArchivos (Parquet, JSON)Tablas optimizadasTablas sobre archivos
EsquemaSchema-on-readSchema-on-writeSchema enforcement
ACIDNoSiSi (Delta/Iceberg)
CostoMuy bajo (storage)Alto (compute+storage)Bajo-Medio
from delta import DeltaTable
from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName('DeltaLakeDemo') \
    .config('spark.jars.packages', 'io.delta:delta-spark_2.12:3.1.0') \
    .getOrCreate()

# Escribir tabla Delta
df_ventas.write.format('delta').mode('overwrite') \
    .partitionBy('year', 'month') \
    .save('s3://data-lake/delta/ventas/')

# MERGE (upsert)
delta_table = DeltaTable.forPath(spark, 's3://data-lake/delta/ventas/')
delta_table.alias('target').merge(
    df_nuevas.alias('source'),
    'target.order_id = source.order_id'
).whenMatchedUpdateAll() \
 .whenNotMatchedInsertAll() \
 .execute()

# Time Travel
df_ayer = spark.read.format('delta') \
    .option('versionAsOf', 5) \
    .load('s3://data-lake/delta/ventas/')

Arquitectura Medallion

Bronze (Raw): Datos crudos, append-only.
Silver (Cleaned): Datos limpiados, deduplicados.
Gold (Business): Modelos dimensionales, listos para dashboards y ML.

🚀 Delta vs Iceberg

Delta Lake: Mejor con Databricks, mas maduro. Apache Iceberg: Vendor-neutral, mejor multi-engine. Para LATAM: Databricks = Delta, AWS/GCP nativo = Iceberg.

Servicio1 TB/mes10 TB/mes100 TB/mes
AWS S3USD 23USD 230USD 2,300
GCSUSD 20USD 200USD 2,000
Azure BlobUSD 18USD 184USD 1,840
Arquitectura de datos