[{"data":1,"prerenderedAt":29},["ShallowReactive",2],{"article-data-curso-gcp-cloud-composer-07":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 orquestar procesos de streaming infinitos en Airflow 3 sin bloquear recursos. Domina el patrón Fire and Forget con el BeamRunPythonPipelineOperator en Cloud Composer.\">\r\n    \u003Cmeta name=\"keywords\"\r\n        content=\"Cloud Composer, Airflow 3, Dataflow, Streaming, Fire and Forget, BeamRunPythonPipelineOperator, Data Engineering, Google Cloud\">\r\n    \u003Cmeta name=\"author\" content=\"Eduardo Martínez Agrelo\">\r\n    \u003Ctitle>Cloud Composer: Orquestación de Streaming | 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: Orquestación de Streaming (El Patrón Fire and Forget)\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>Llegamos a uno de los desafíos arquitectónicos más interesantes para un Data Engineer: ¿Cómo orquestar un proceso\r\n        que nunca termina (Streaming) usando una herramienta diseñada para procesos finitos (Airflow)? Si lanzamos un\r\n        job de Dataflow de forma convencional, Airflow esperará eternamente a que finalice, bloqueando un \"worker\" y\r\n        marcando el DAG como inacabado. Para solucionar esto, implementaremos el patrón \u003Cstrong>Fire and\r\n            Forget\u003C/strong>.\u003C/p>\r\n\r\n    \u003Ch2>El Dilema de los Procesos Infinitos\u003C/h2>\r\n\r\n    \u003Cp>Apache Airflow está optimizado para tareas Batch con un inicio y un fin claros. Sin embargo, un pipeline de\r\n        streaming está diseñado para estar encendido 24/7:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Bloqueo de Recursos:\u003C/strong> Una tarea que no termina consume una \"ranura\" (slot) de ejecución,\r\n            impidiendo que otros DAGs se ejecuten.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Falsos Negativos:\u003C/strong> Si el DAG nunca llega a estado \"Success\", perdemos la capacidad de\r\n            monitorizar correctamente la salud de nuestra infraestructura.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Orquestación Moderna con Airflow 3\u003C/h2>\r\n\r\n    \u003Cp>En las versiones más recientes de Cloud Composer y Airflow 3, la integración con Apache Beam se ha\r\n        profesionalizado. Utilizaremos el operador de nueva generación que separa la lógica del pipeline de la\r\n        configuración de la infraestructura:\u003C/p>\r\n    \u003Cp>\u003Ccode>BeamRunPythonPipelineOperator(runner=\"DataflowRunner\", ...)\u003C/code>\u003C/p>\r\n    \u003Cp>Este operador permite una gestión mucho más limpia de los parámetros de ejecución, permitiendo que Cloud Composer\r\n        actúe como un disparador de alta precisión para nuestros motores de Dataflow.\u003C/p>\r\n\r\n    \u003Ch2>El Parámetro Mágico: wait_until_finished\u003C/h2>\r\n\r\n    \u003Cp>La clave para resolver nuestro dilema reside en un único parámetro dentro de la configuración de Dataflow. Al\r\n        establecerlo en \u003Ccode>False\u003C/code>, cambiamos el comportamiento de Airflow por completo:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Disparo y Desconexión:\u003C/strong> Airflow envía la orden a Google Cloud para iniciar el Job de\r\n            Dataflow.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Liberación de Workers:\u003C/strong> Una vez confirmado que el Job ha arrancado con éxito, Airflow marca\r\n            la tarea como \"Verde\" y libera sus recursos.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Monitorización Independiente:\u003C/strong> El proceso de streaming continúa viviendo en el servicio de\r\n            Dataflow, totalmente independiente del ciclo de vida del DAG en Composer.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Implementación práctica\u003C/h2>\r\n\r\n    \u003Cp>En este laboratorio, desplegaremos un DAG diseñado con la TaskFlow API de Airflow 3. Configuraremos el operador\r\n        para que localice nuestro script de Beam en el Data Lake y lo envíe a ejecución. Verás con tus propios ojos cómo\r\n        el DAG finaliza con éxito en pocos segundos, mientras que en la consola de Dataflow el motor empieza a escalar y\r\n        a procesar los mensajes en tiempo real que estamos enviando desde nuestro publicador de Pub/Sub.\u003C/p>\r\n\r\n    \u003Ch2>Conclusión: Arquitecturas Híbridas\u003C/h2>\r\n    \u003Cp>Has dominado la capacidad de gobernar procesos Batch y Streaming desde un único punto de control. Esta es la\r\n        marca de un ingeniero avanzado: saber cuándo Airflow debe supervisar y cuándo debe simplemente disparar. Con\r\n        todas nuestras piezas funcionando en la nube, solo nos queda un paso final: crear el Master DAG que gobierne\r\n        todo este ecosistema de forma modular y automatizada.\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-07.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",1776363698529]