[{"data":1,"prerenderedAt":29},["ShallowReactive",2],{"article-data-curso-gcp-cloud-composer-02":3},{"content":4,"date":5,"image":6,"sideArticles":7},"\u003C!DOCTYPE html>\r\n\u003Chtml lang=\"es\">\r\n\r\n\u003Chead>\r\n    \u003Cmeta charset=\"UTF-8\">\r\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    \u003Cmeta name=\"description\"\r\n        content=\"Aprende a utilizar Sensores en Apache Airflow para crear pipelines reactivos. Configura el GCSObjectExistenceSensor para detectar la llegada de datos al Data Lake de Google Cloud.\">\r\n    \u003Cmeta name=\"keywords\"\r\n        content=\"Cloud Composer, Airflow Sensors, GCS, Google Cloud Storage, Data Engineering, Automatización, Python, Batch Processing\">\r\n    \u003Cmeta name=\"author\" content=\"Eduardo Martínez Agrelo\">\r\n    \u003Ctitle>Cloud Composer: Sensores y Automatización Batch | Curso Composer GCP\u003C/title>\r\n    \u003Cstyle>\r\n        body {\r\n            font-family: sans-serif;\r\n            line-height: 1.6;\r\n        }\r\n\r\n        h1,\r\n        h2,\r\n        h3 {\r\n            color: #333;\r\n        }\r\n\r\n        ul {\r\n            list-style-type: disc;\r\n            margin-left: 20px;\r\n        }\r\n\r\n        code {\r\n            background-color: #f4f4f4;\r\n            padding: 2px 5px;\r\n            border-radius: 3px;\r\n            font-family: monospace;\r\n        }\r\n    \u003C/style>\r\n\u003C/head>\r\n\r\n\u003Cbody>\r\n    \u003Ch1>Cloud Composer: Sensores y Automatización Batch (Pipelines Reactivos)\u003C/h1>\r\n    \u003Cp>\u003Cstrong>Autor:\u003C/strong> \u003Ca href=\"https://www.youtube.com/@EduardoMartinezAgrelo\" target=\"_blank\">Eduardo Martínez\r\n            Agrelo\u003C/a>\u003C/p>\r\n\r\n    \u003Cp>En el mundo real de la ingeniería de datos, los flujos no siempre son predecibles. Un proveedor puede enviar un\r\n        archivo a las 8:00 AM o retrasarse hasta las 11:00 AM. Ejecutar un DAG en una hora fija y esperar que el dato\r\n        esté ahí es una receta para el error. Aquí es donde entran los \u003Cstrong>Sensores\u003C/strong>, la herramienta que\r\n        convierte a Airflow en un sistema reactivo y eficiente.\u003C/p>\r\n\r\n    \u003Ch2>¿Qué son los Airflow Sensors?\u003C/h2>\r\n\r\n    \u003Cp>Un sensor es un tipo especial de operador cuyo único propósito es esperar a que ocurra un evento externo. En\r\n        lugar de fallar si el dato no existe, el sensor se queda en estado de espera (polling):\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Eficiencia:\u003C/strong> Con el modo \u003Ccode>reschedule\u003C/code>, el sensor libera recursos del worker\r\n            mientras espera, permitiendo que otras tareas se ejecuten.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Robustez:\u003C/strong> Permite establecer tiempos de expiración (timeouts) para alertar si un dato\r\n            crítico no ha llegado en el tiempo previsto.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>El GCSObjectExistenceSensor\u003C/h2>\r\n\r\n    \u003Cp>En este laboratorio, nos enfocaremos en la detección de archivos en nuestro Data Lake. Utilizaremos el sensor\r\n        nativo de Google Cloud Storage para monitorizar rutas específicas:\u003C/p>\r\n    \u003Cp>\u003Ccode>wait_for_file = GCSObjectExistenceSensor(task_id='wait', bucket='my-lake')\u003C/code>\u003C/p>\r\n    \u003Cp>Esta abstracción nos permite desacoplar la llegada del dato de su procesamiento posterior, asegurando que la\r\n        tubería solo avance cuando la materia prima esté disponible en el bucket.\u003C/p>\r\n\r\n    \u003Ch2>Simulación de Datos con Python\u003C/h2>\r\n\r\n    \u003Cp>Para probar nuestro sensor, desarrollaremos un script generador en Python. Este script simulará un sistema de\r\n        ventas externo que deposita archivos CSV con nombres dinámicos basados en marcas de tiempo. Aprenderás a:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Interactuar con la API de GCS:\u003C/strong> Subir objetos programáticamente desde tu entorno local a la\r\n            nube.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Manejo de Prefijos:\u003C/strong> Configurar sensores que busquen patrones de archivos en lugar de\r\n            nombres exactos.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Implementación práctica\u003C/h2>\r\n\r\n    \u003Cp>Lanzaremos nuestro DAG y observaremos cómo la tarea del sensor permanece en color verde claro, indicando que está\r\n        \"escuchando\". En el momento en que ejecutemos nuestro script local y el archivo impacte en el bucket, verás cómo\r\n        Airflow detecta el cambio de estado casi instantáneamente. Esta es la base de la automatización batch\r\n        profesional: no forzar el tiempo, sino responder a los eventos.\u003C/p>\r\n\r\n    \u003Ch2>Conclusión: De pipelines estáticos a dinámicos\u003C/h2>\r\n    \u003Cp>Has aprendido que un orquestador no solo da órdenes, también sabe esperar. Dominar los sensores te permite\r\n        construir arquitecturas mucho más tolerantes a fallos y retrasos externos. Ahora que tu DAG sabe cuándo han\r\n        llegado los datos, el siguiente reto lógico es moverlos hacia nuestro almacén analítico: BigQuery.\u003C/p>\r\n\u003C/body>\r\n\r\n\u003C/html>","April 15, 2026","https://storage.googleapis.com/mp-blog/images/curso-gcp-cloud-composer-02.jpg",[8,14,19,24],{"id":9,"title":10,"description":11,"image":12,"date":13},"curso-gcp-apache-spark-01","Spark: Infraestructura como Código con Terraform | Curso Spark, Scala y Terraform","Aprende a desplegar clústeres de Big Data profesionalmente. Domina Terraform para crear infraestructura como código (IaC) en Google Cloud y automatiza tu entorno de Dataproc para Spark.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-01.jpg","March 12, 2026",{"id":15,"title":16,"description":17,"image":18,"date":13},"curso-gcp-apache-spark-02","Spark: Ingesta (Raw to Bronze) y Formatos Columnares | Curso Spark, Scala y Terraform","Domina la ingesta de datos con Spark. Aprende a convertir JSONs pesados en formato Parquet, optimiza tu almacenamiento en un 85% y domina los esquemas estrictos con Scala.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-02.jpg",{"id":20,"title":21,"description":22,"image":23,"date":13},"curso-gcp-apache-spark-03","Spark: Limpieza y Calidad (Bronze to Silver) | Curso Spark, Scala y Terraform","Domina la limpieza de datos en Spark. Aprende a usar Scala para implementar la capa Silver (Plata) de tu arquitectura Medallón, utilizando Case Classes para mayor seguridad.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-03.jpg",{"id":25,"title":26,"description":27,"image":28,"date":13},"curso-gcp-apache-spark-04","Spark: Analítica Avanzada (Silver to Gold) | Curso Spark, Scala y Terraform","Domina el Análisis Avanzado con Spark. Aprende a calcular métricas de negocio con Window Functions y a extraer el Top 3 de canciones por país y día para tu capa Gold.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-04.jpg",1776363704102]