Saltar a contenido

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.