Planning 26/27
23/24
Si tienes curiosidad por saber cómo han ido evolucionando que he impartido y cuándo lo he hecho, puedes consultar la planificación del curso 23/24 aquí.
Este curso me he propuesto reescribir gran parte de los apuntes (reutilizando todo aquello que esté vigente) y agruparlo todo en tres grandes bloques. Un primer bloque de Ingeniería de datos (con los conceptos que debe dominar un ingeniero de datos así como las herramientas base), un bloque de Spark (trabajando con los DataFrames y la arquitectura medallion con formato Delta) y finalmente un bloque de Flujo de datos donde agrupo la ingesta en streaming y sus diferentes herramientas (como Kafka y Spark Streaming).
Además, de forma paralela, desarrollamos tres proyectos de innovación en cada una de las evaluaciones: un primer proyecto de IoT, el segundo centrado en el proyecto Lara y por último un proyecto centrado el desarrollo de una aplicación mediante el uso de agentes inteligentes.
Así pues, la organización general del curso de IABD para el curso 26/27 es:
%%{init: { 'theme': 'forest' } }%%
timeline
title Planificación temporal
section 1ª Evaluación
Octubre : Fundamentos : Analítica de datos
Noviembre : Hugging Face : Machine Learning
Diciembre : Hugging Face : Machine Learning : Ingeniería de datos
section 2ª Evaluación
Enero : Ingeniería de datos : RRNN
Febrero : Cuadros de mandos : RRNN
Marzo : Spark : Cuadros de mandos
section 3ª Evaluación
Abril : LLM : Flujos de datos
Mayo : LLM : Flujos de datos
Ingeniería de Datos (52h)¶
Este bloque construye la base de ingeniería de datos de principio a fin: ciclo de vida del dato, formatos y modelado, evolución de HDFS a almacenamiento de objetos y motores de consulta sobre el lago. A partir de ahí, se trabaja la ingesta moderna y la transformación con dbt hasta cerrar con un pipeline ETL documentado, apoyado en un stack Docker específico para practicar todo el flujo.
| Sesión | Conceptos | Fecha | Duración (h) |
|---|---|---|---|
| 1.- Ciclo de vida del dato | Generación y almacenamiento, ETL vs ELT; Arquitecturas de datos: del Data warehouse al Data lakehouse, Batch vs streaming; Arquitecturas Lambda y Kappa; Panorama actual | 14 Dic 26 | 4 |
| 2.- Formatos de datos | De filas a columnas; CSV/JSON → Avro → Arrow → Parquet; Compresión, encoding, predicate pushdown | 16 Dic 26 | 4 |
| 3, 4.- SQL analítico | DuckDB; SQL amigable; CTEs, agregaciones multinivel, pivotar; Funciones ventana; Analítica de datos | 8 Ene 27 | 8 |
| 5, 6.- Modelado dimensional | Hechos y dimensiones. Estrella vs copo de nieve; SCD (dimensiones lentamente cambiantes) | 11 Ene 27 13 Ene 27 |
8 |
| 7, 8.- De HDFS al almacenamiento de objetos | Almacenamiento distribuido y object storage, de HDFS a S3, pasando por MinIO. Leyendo datos en object storage con DuckDB y boto3. | 18 Ene 27 20 Ene 27 |
8 |
| 9, 10.- Motores de consulta | De Hive a Trino, pasando por DuckDB; SQL-on-the-lake sobre Parquet en S3/MinIO. | 25 Ene 27 27 Ene 27 |
8 |
| 11.- Extracción y carga con DLT | Patrones de extracción, APIs, batch vs incremental. Hands-on: dlt de una API a MinIO/DuckDB. | 1 Feb 27 | 4 |
| 12.- Transformación con DBT | Analytics engineering; estructura de proyecto, profiles, sources, ref(); staging/marts; materializaciones (view/table). Hands-on: dbt Core + DuckDB. | 3 Feb 27 | 4 |
| 13.- Orquestación con Airflow | DAGs, TaskFlow API, operadores, dependencias, scheduling, reintentos e idempotencia, sensores. Hands-on: DAG mínimo dlt→dbt run en el profile airflow. | 8 Feb 27 | 4 |
| Stack Docker | Stack Docker para el bloque de Ingeniería de Datos: HDFS, Hive, Trino, DuckDB |
Spark (32h)¶
Este bloque profundiza en Spark desde los fundamentos de arquitectura y uso de DataFrames hasta la optimización con Spark SQL y catálogo. El recorrido continúa con diseño medallion y formatos de tabla abiertos, y se centra en Delta Lake para trabajar ACID, evolución de esquema, mantenimiento e interoperabilidad, terminando con un pipeline declarativo de extremo a extremo como cierre práctico.
| Sesión | Conceptos | Fecha | Duración (h) |
|---|---|---|---|
| 1.- Spark: fundamentos | Por qué Spark y cuándo. Arquitectura (driver/executors, DAG, lazy, shuffle); Spark vs Polars/DuckDB (cuándo escalar); RDD → DataFrame → Spark SQL. Hands-on en tu stack (Jupyter como driver). | ||
| 2.- DataFrames en profundidad | Transformaciones/acciones, joins, particionado, funciones de columna, UDFs vs nativas, PyArrow, ANSI mode (Spark 4). | ||
| 3.- Spark SQL, catálogo y optimización | Catalyst, explain, broadcast joins, caching, AQE; Hive Metastore como catálogo (ya lo tienes). | ||
| 4.- Arquitectura medallion | Bronze/silver/gold: diseño, idempotencia, calidad por capa. Hands-on: raw → bronze en MinIO. | ||
| 5.- Open table formats | El problema del data swamp; ACID, time travel, schema evolution; Iceberg vs Delta vs Hudi y por qué Iceberg es el estándar emergente. Hands-on ligero: tabla Iceberg en Athena o Spark (puente al bloque 2). | ||
| 6.- Delta Lake (I) | Transaction log, ACID, time travel, schema evolution, MERGE/UPSERT. Hands-on: bronze → silver. | ||
| 7.- Delta Lake (II) + interoperabilidad | OPTIMIZE/Z-ORDER/compaction, vacuum; UniForm (leer Delta como Iceberg); Delta vs Iceberg en el mercado. Hands-on: silver → gold + mantenimiento. | ||
| 8.- Declarative pipelines + capstone | Pipeline medallion end-to-end (Spark 4.1 declarative pipelines); mención a Databricks/Fabric como plataformas gestionadas. Repaso. | ||
| Stack Docker | Stack Docker para el bloque de Spark: Cluster de Spark, DeltaLake, Kafka, Airflow |
Flujos de datos (36h)¶
Este bloque aborda el procesamiento en tiempo real comparando batch y streaming, y desarrolla la ingesta orientada a eventos con Kafka, Kafka Connect y CDC. Se complementa con una visión de herramientas de flujo visual, pasa a la implementación con Spark Structured Streaming y culmina con la orquestación en Airflow mediante un caso integrador que conecta Kafka, Spark y Delta.
| Sesión | Conceptos | Fecha | Duración (h) |
|---|---|---|---|
| 1.- Batch vs streaming | Por qué el tiempo real; casos de uso; arquitecturas Lambda/Kappa; event-driven. | ||
| 2.- Kafka (I) | Topics, particiones, offsets, producers/consumers, KRaft (sin ZooKeeper). Hands-on en tu stack. | ||
| 3.- Kafka (II) | Consumer groups, semántica de entrega (at-least/exactly-once), retención, Schema Registry/Avro. | ||
| 4.- Kafka Connect + CDC | Source/sink (Aiven) y Debezium para Change Data Capture desde MySQL (tu retail_db). Unifica tus materiales de conectores. | ||
| 5.- Flujo visual: NiFi en perspectiva | 1 sesión conceptual del paradigma flow-based + posicionamiento como legacy y alternativas (dlt, Kestra). Cumples currículo sin invertir de más. | ||
| 6.- Spark Structured Streaming (I) | Micro-batch, fuentes/sinks, Kafka→Spark, windowing, watermarks. | ||
| 7.- Spark Structured Streaming (II) | Estado, agregaciones con ventana, escritura streaming a Delta (une los tres bloques); exactly-once; mención a Flink como streaming "puro". | ||
| 8.- Airflow (I) | DAGs, TaskFlow API, operadores, scheduling; Airflow 3: data-aware scheduling / Assets. Hands-on en tu stack. | ||
| 9.- Airflow (II) + capstone integrador | DAG orquestando ingesta → Spark → Delta con sensores/data-aware; tu Caso 5 integrador Kafka + Spark Streaming + Airflow; mención Dagster/Kestra. |