[{"data":1,"prerenderedAt":29},["ShallowReactive",2],{"article-data-curso-gcp-cloud-composer-06":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 construir pipelines de streaming con Apache Beam. Diseña transformaciones distribuidas para procesar datos desde Pub/Sub hacia BigQuery en tiempo real utilizando Dataflow.\">\r\n    \u003Cmeta name=\"keywords\"\r\n        content=\"Apache Beam, Dataflow, Python, Streaming, Pub/Sub, BigQuery, PTransforms, DoFn, Data Engineering, Google Cloud\">\r\n    \u003Cmeta name=\"author\" content=\"Eduardo Martínez Agrelo\">\r\n    \u003Ctitle>Dataflow: Apache Beam (El Motor de Procesamiento) | 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>Dataflow: Apache Beam (El Motor de Procesamiento en Tiempo Real)\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 laboratorio anterior creamos la \"antena\" (Pub/Sub) que recibe señales en tiempo real. Ahora necesitamos un\r\n        procesador capaz de interpretar esas señales, limpiarlas y darles estructura antes de guardarlas\r\n        definitivamente. Para esta tarea utilizaremos \u003Cstrong>Apache Beam\u003C/strong>, el framework estándar de la\r\n        industria para el procesamiento de datos unificado.\u003C/p>\r\n\r\n    \u003Ch2>¿Por qué Apache Beam?\u003C/h2>\r\n\r\n    \u003Cp>Apache Beam es un modelo de programación avanzado que permite definir pipelines de datos que se ejecutan de forma\r\n        paralela y distribuida. Su principal ventaja es la portabilidad:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Modelo Unificado:\u003C/strong> El mismo código que escribes para procesar un archivo CSV (Batch) sirve\r\n            para procesar un flujo infinito de mensajes (Streaming).\u003C/li>\r\n        \u003Cli>\u003Cstrong>Abstracción del Runner:\u003C/strong> Escribes el código en Python y decides dónde ejecutarlo: en tu\r\n            máquina local, en Apache Spark o en el servicio gestionado de Google, \u003Cstrong>Dataflow\u003C/strong>.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Transformaciones DoFn y PTransforms\u003C/h2>\r\n\r\n    \u003Cp>En este laboratorio, profundizaremos en la lógica interna de Beam. Aprenderás a crear clases \u003Ccode>DoFn\u003C/code>,\r\n        que son pequeñas unidades de lógica donde ocurre la magia del procesamiento:\u003C/p>\r\n    \u003Cp>\u003Ccode>class ParseMessage(beam.DoFn): def process(self, element): yield json.loads(element)\u003C/code>\u003C/p>\r\n    \u003Cp>Estas transformaciones permiten filtrar mensajes corruptos, enriquecer datos con información adicional o, como\r\n        haremos hoy, convertir una cadena de bytes plana en un diccionario estructurado compatible con BigQuery.\u003C/p>\r\n\r\n    \u003Ch2>Escribiendo en BigQuery (Streaming Inserts)\u003C/h2>\r\n\r\n    \u003Cp>El destino final de nuestro pipeline es una tabla analítica. Beam se encarga de gestionar la complejidad de las\r\n        inserciones en streaming:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Auto-creación de tablas:\u003C/strong> Configuraremos el pipeline para que cree la tabla en BigQuery si\r\n            esta no existe previamente.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Gestión de Esquemas:\u003C/strong> Definiremos rigurosamente los tipos de datos (String, Integer,\r\n            Timestamp) para asegurar que la información sea consultable desde el primer segundo.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Implementación práctica\u003C/h2>\r\n\r\n    \u003Cp>Desarrollaremos un script de Python utilizando el SDK de Apache Beam. Configuraremos los \"Sinks\" y \"Sources\",\r\n        conectando la lectura de Pub/Sub con la escritura en BigQuery. Al finalizar el laboratorio, subiremos este\r\n        script a nuestro Data Lake en Google Cloud Storage. Este paso es fundamental, ya que permitirá que nuestro\r\n        orquestador, Cloud Composer, pueda localizar el código y lanzarlo en el siguiente laboratorio.\u003C/p>\r\n\r\n    \u003Ch2>Conclusión: Tu motor de datos está listo\u003C/h2>\r\n    \u003Cp>Has pasado de ser un programador de scripts locales a un arquitecto de pipelines distribuidos. Tienes el código\r\n        necesario para procesar flujos masivos de datos sin preocuparte por la memoria o la CPU. Sin embargo, este motor\r\n        todavía no tiene un conductor. En el próximo laboratorio, enseñaremos a Cloud Composer a encender y supervisar\r\n        este proceso de streaming de forma profesional.\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-06.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",1776363704199]