Canalizaciones de producción con flujos de trabajo

Transformación de datos con Spark SQL en Databricks

Disha Mukherjee

Lead Data Engineer

¿Por qué Delta Lake?

Una bóveda digital segura y brillante con tablas de datos organizadas y un escudo protector, estilo moderno plano

 

$$

  • Transacciones ACID → revierte escrituras fallidas
  • Aplicación de esquema → bloquea tipos no coincidentes
  • Versionado → consulta cualquier estado previo
Transformación de datos con Spark SQL en Databricks

Escritura en Delta

df_valid.write.format("delta") \
    .mode("overwrite") \
    .saveAsTable("transactions_clean")

print(f"Rows written: {df_valid.count():,}")
Rows written: 33,223

$$

$$

  • Aparece una nueva tabla Delta en Unity Catalog
Transformación de datos con Spark SQL en Databricks

Tareas de notebook

task1_ingest: cargar y limpiar

  • Carga CSV → aplica limpieza → escribe una tabla Delta
Transformación de datos con Spark SQL en Databricks

Tareas de notebook

task2_metrics: ingresos por categoría

  • Lee la tabla limpia → calcula métricas → escribe en otra tabla
Transformación de datos con Spark SQL en Databricks

Tareas de notebook

task3_customers: ranking por gasto

  • Lee la tabla limpia → ordena clientes → guarda en otra tabla
Transformación de datos con Spark SQL en Databricks

Creación del job

Interfaz de Jobs y Pipelines mostrando un DAG de trabajo de tres tareas completado con flechas de dependencia de task1_ingest a task2_metrics a task3_customers

  • Puedes ejecutar manualmente, programar y definir disparadores
Transformación de datos con Spark SQL en Databricks

Ejecución del job

DAG de ejecución del job con task1_ingest y task2_metrics en verde (correcto) y task3_customers en rojo (error)

Transformación de datos con Spark SQL en Databricks

Ejecución del job

Revisar un error en la tercera tarea

  • Error: customer-id debe ser Customer_ID
Transformación de datos con Spark SQL en Databricks

Ejecución del job

Vistas de gráfico con éxito

Una vista de cronología

Transformación de datos con Spark SQL en Databricks

¿Qué es Lakeflow?

$$

$$

comparación: Imperativo (Jobs) | Declarativo (Lakeflow)

 

  • Jobs → gestionamos cada paso
  • Lakeflow → declaramos qué deben contener las tablas
  • Databricks gestiona orden, reintentos y cómputo
Transformación de datos con Spark SQL en Databricks

El patrón @dlt.table

@dlt.table(name="transactions_bronze")
def transactions_bronze():
    return spark.read.format("csv").schema(schema).load(FILE_PATH)

@dlt.table(name="transactions_silver") def transactions_silver(): return dlt.read("transactions_bronze").na.drop(...).filter(...)
@dlt.table(name="category_revenue_gold") def category_revenue_gold(): return dlt.read("transactions_silver").groupBy("Category").agg(...)
Transformación de datos con Spark SQL en Databricks

Ejecución de la canalización

DAG de la canalización Lakeflow mostrando transactions_bronze 100K filas, luego transactions_silver 33K filas y después category_revenue_gold 6 filas, todas vistas materializadas en verde

  • Bronze (100K filas) → Silver (33K filas) → Gold (6 filas)
Transformación de datos con Spark SQL en Databricks

¿Notebooks, Jobs o Lakeflow?

$$

capas: Notebooks, Databricks Jobs, Lakeflow Pipelines

 

$$

  • Notebooks → exploración, prototipos
  • Databricks Jobs → canalizaciones por pasos y programadas
  • Lakeflow → totalmente gestionado, declarativo
Transformación de datos con Spark SQL en Databricks

¡Vamos a practicar!

Transformación de datos con Spark SQL en Databricks

Preparing Video For Download...