[{"data":1,"prerenderedAt":29},["ShallowReactive",2],{"article-data-curso-gcp-pub-sub-05":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 realizar procesamiento por lotes (Batch) con Google Cloud Pub/Sub. Exporta mensajes acumulados a Cloud Storage de forma eficiente mediante Pull síncrono.\">\r\n    \u003Cmeta name=\"keywords\"\r\n        content=\"Pub/Sub, Batch Processing, Cloud Storage, GCS, Python, Terraform, Pull síncrono, Data Engineering\">\r\n    \u003Cmeta name=\"author\" content=\"Eduardo Martínez Agrelo\">\r\n    \u003Ctitle>Pub/Sub: Job Batch | Curso Pub/Sub 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>Pub/Sub: Job Batch (Procesamiento por Lotes)\u003C/h1>\r\n\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>Aunque Pub/Sub es conocido por su baja latencia en tiempo real, muchas veces es más eficiente y económico\r\n        procesar datos en grupos. En este laboratorio, aprenderemos a crear un \u003Cstrong>Job Batch\u003C/strong>: un proceso\r\n        que despierta, recolecta todos los mensajes acumulados y los persiste en un sistema de almacenamiento masivo.\r\n    \u003C/p>\r\n\r\n    \u003Ch2>¿Qué es el Pull Síncrono?\u003C/h2>\r\n\r\n    \u003Cp>A diferencia del streaming constante (donde el servidor nos \"empuja\" los datos), el \u003Cstrong>Pull\r\n            Síncrono\u003C/strong> permite que nuestra aplicación tome la iniciativa. Le pedimos a Pub/Sub una cantidad\r\n        exacta de mensajes acumulados:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Eficiencia:\u003C/strong> Podemos configurar un proceso cron (programado) que se ejecute una vez al día\r\n            para vaciar la cola.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Control de Carga:\u003C/strong> Evitamos saturar nuestros sistemas de destino procesando los datos en\r\n            tamaños de lote controlados.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Persistencia en Cloud Storage (GCS)\u003C/h2>\r\n\r\n    \u003Cp>Cloud Storage es el destino ideal para backups y data lakes. En este ejercicio, utilizaremos Terraform para crear\r\n        un \u003Cstrong>Bucket\u003C/strong> donde guardaremos nuestros lotes de mensajes. Aprenderemos a transformar el flujo de\r\n        eventos en archivos JSON estructurados, facilitando su posterior análisis en herramientas de Big Data.\u003C/p>\r\n\r\n    \u003Ch2>La importancia del ACK en Bloque\u003C/h2>\r\n\r\n    \u003Cp>En un entorno Batch, la confirmación de los mensajes cambia ligeramente. En lugar de confirmar cada mensaje\r\n        individualmente, recolectamos sus \u003Ccode>ack_ids\u003C/code> y realizamos una confirmación múltiple al final de la\r\n        operación:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Atomicidad:\u003C/strong> Si el guardado en el Bucket falla, no confirmamos los mensajes, asegurando que\r\n            sigan disponibles para un reintento posterior.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Reducción de llamadas:\u003C/strong> Optimizamos la comunicación con la API de Google Cloud al reducir el\r\n            número de peticiones de red.\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 en Python que utiliza \u003Ccode>storage.Client()\u003C/code> y\r\n        \u003Ccode>pubsub_v1.SubscriberClient()\u003C/code>. El flujo será: solicitar 10 mensajes, agruparlos en una lista,\r\n        subirlos como un único objeto a GCS y, finalmente, realizar el ACK masivo. Este patrón es la base de los\r\n        procesos de auditoría y almacenamiento histórico en la nube.\u003C/p>\r\n\r\n    \u003Ch2>Conclusión: Versatilidad en el manejo de datos\u003C/h2>\r\n    \u003Cp>Has aprendido que Pub/Sub no solo sirve para la comunicación instantánea, sino que es un búfer de datos excelente\r\n        para procesos Batch. Ahora que dominas el almacenamiento en reposo, es hora de volver a la acción con datos que\r\n        nunca se detienen: el Streaming de telemetría IoT.\u003C/p>\r\n\u003C/body>\r\n\r\n\u003C/html>","April 15, 2026","https://storage.googleapis.com/mp-blog/images/curso-gcp-pub-sub-05.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",1776363704389]