Dataflow: Apache Beam (El Motor de Procesamiento) | Curso Composer GCP

Dataflow: Apache Beam (El Motor de Procesamiento en Tiempo Real)

Autor: Eduardo Martínez Agrelo

En el laboratorio anterior creamos la "antena" (Pub/Sub) que recibe señales en tiempo real. Ahora necesitamos un procesador capaz de interpretar esas señales, limpiarlas y darles estructura antes de guardarlas definitivamente. Para esta tarea utilizaremos Apache Beam, el framework estándar de la industria para el procesamiento de datos unificado.

¿Por qué Apache Beam?

Apache Beam es un modelo de programación avanzado que permite definir pipelines de datos que se ejecutan de forma paralela y distribuida. Su principal ventaja es la portabilidad:

  • Modelo Unificado: El mismo código que escribes para procesar un archivo CSV (Batch) sirve para procesar un flujo infinito de mensajes (Streaming).
  • Abstracción del Runner: Escribes el código en Python y decides dónde ejecutarlo: en tu máquina local, en Apache Spark o en el servicio gestionado de Google, Dataflow.

Transformaciones DoFn y PTransforms

En este laboratorio, profundizaremos en la lógica interna de Beam. Aprenderás a crear clases DoFn, que son pequeñas unidades de lógica donde ocurre la magia del procesamiento:

class ParseMessage(beam.DoFn): def process(self, element): yield json.loads(element)

Estas transformaciones permiten filtrar mensajes corruptos, enriquecer datos con información adicional o, como haremos hoy, convertir una cadena de bytes plana en un diccionario estructurado compatible con BigQuery.

Escribiendo en BigQuery (Streaming Inserts)

El destino final de nuestro pipeline es una tabla analítica. Beam se encarga de gestionar la complejidad de las inserciones en streaming:

  • Auto-creación de tablas: Configuraremos el pipeline para que cree la tabla en BigQuery si esta no existe previamente.
  • Gestión de Esquemas: Definiremos rigurosamente los tipos de datos (String, Integer, Timestamp) para asegurar que la información sea consultable desde el primer segundo.

Implementación práctica

Desarrollaremos un script de Python utilizando el SDK de Apache Beam. Configuraremos los "Sinks" y "Sources", conectando la lectura de Pub/Sub con la escritura en BigQuery. Al finalizar el laboratorio, subiremos este script a nuestro Data Lake en Google Cloud Storage. Este paso es fundamental, ya que permitirá que nuestro orquestador, Cloud Composer, pueda localizar el código y lanzarlo en el siguiente laboratorio.

Conclusión: Tu motor de datos está listo

Has pasado de ser un programador de scripts locales a un arquitecto de pipelines distribuidos. Tienes el código necesario para procesar flujos masivos de datos sin preocuparte por la memoria o la CPU. Sin embargo, este motor todavía no tiene un conductor. En el próximo laboratorio, enseñaremos a Cloud Composer a encender y supervisar este proceso de streaming de forma profesional.

Newsletter GCP
¿Quieres estar al día con las últimas novedades de Google Cloud Platform? ¡Suscríbete y no te pierdas nada!