Cloud Dataflow — Data Fusion — Cloud Composer

Autores: Gabriel Guerra, Paulette Parra, Diego Paz, Pablo Zuñiga

Image for post
Image for post

Para streaming de datos, procesamiento de datos, en series de tiempo, 2 tipos de transformaciones, una analogía es del cálculo del promedió, siendo las transformaciones de los datos en un tiempo específico.

  • Un proceso en tiempo determinado en línea recta donde todos culminan.
  • Un evento que ocurre al finalizar el último evento procesado.

Comienza con la llegada del primero dato de entrada y finaliza cuando se le informa que es el último elemento en ingresar en una lista esto es solamente en consola. En Streaming no se puede saber cuántos datos van a llegar denominándolas “Unbounded” o datos ilimitados.
La forma de instanciar una ventana global es con los siguientes comandos:
from apache_beam import window
session_windowed_items = (
items | ‘window’ >> beam.WindowInto(window.GlobalWindows()))

Tiene un inicio y un fin, se prepara cada ventana de tiempo con un Tag o etiqueta denominado “DTS”, al usar la venta de tiempo los datos procesados se los realiza por grupos, los tipos de ventanas de tiempo se divide en fijas, slides o sesiones.
Un ejemplo de tag es Date Time Stamp o Marca de tiempo [29/Apr/2019:05:21:35–0800]

Dataflow tiene templates que nos permite el despliegue de la información de una manera más rápida, constan de varias características:

  • Ejecutan los programas escritos en Apache Beam
  • Manejan todas las dependencias
  • Hacen el llamado a la API de Dataflow
  • Generan y ejecutan el Job o trabajo
  • Obtenido la información resultante de forma Bash o Stream

El código esta embebido en una plantilla en la cual no somos conscientes del código, para su correcto uso debemos ser conscientes de los parámetros que necesita y se ejecutara correctamente.
Dataflow nos permite tener varios nodos y desarrollos de distintos flujos de trabajo, con ayuda de los templates permite tener las actividades separadas, para que cade desarrollador realice sus actividades de ejecución, seccionando las partes para no tener conflictos.
El uso de templates por Dataflow es practica al habilitar distintos usuarios para tener “ETLS”, en un tiempo relativamente corto

Es algo muy práctico. Abrimos Dataflow, seleccionamos la plantilla, colocamos los parámetros o usamos comandos de G Cloud para temas de optimización de recursos, información compartida.
Los casos de uso es que el código no lo tengo, se realiza una construcción por bloques y el código es de libre acceso, algunos templates aprovecha la integración de los distintos servicios de “GCP”, “Pub/Sub”, “Big Table”, “Spanner”, “Big Query”, para escribir la información de forma directa en la base de datos que necesite o donde se desea que estén.
Si se requiere la creación de una platilla es recomendable el uso de Eclipse, se coloque el IDE en la librería de Dataflow, se desarrolla el “Maven”, con la ayuda de la documentación que se genera realizamos la plantilla indicando las entradas y salidas, en conjunto con las distintas transformaciones que deben realizarse en el medio a generar, se debe cambiar parámetros en
donde se los va a ejecutar (Run time) y donde no se debe ejecutar (Non Run Time).
En la creación o construcción de la plantilla se tiene las funciones ValueProviders los cuales se pasan a través de toda la fase de construcción del PipeLine, los valores anidados y los metadatos de la plantilla.

Podemos ejecutar sentencias SQL en Dataflow el cual transforma estas sentencias SQL en un lenguaje que puede leer como lo es Java, para ello no es necesario saber el lenguaje de programación mientras sepamos la sentencia, consulta, query en SQL.

Data Fusion y Cloud Composer

Es una interfaz gráfica que nos provee API’s, nos habilita una solución que desarrollo flujos Pipelines óptimos complejos, pero en muy corto tiempo, permitiendo a usuarios de negocios, desarrolladores, científicos de datos realizar de una forma rápita construir desplegar, administrar los datos y su integración.

  • Tenemos que limpiar los datos, realizar las transformaciones, estandarizaciones, automatización y monitoreo de los mismos.
  • Probar, depurar y desarrollar los datos antes del despliegue.
  • Al desplegar se debe monitoreas y reportar la integración de los datos con pipeline

Tenemos la integración con cualquier tipo de dato, alta productividad, reduce la complejidad y tiene flexibilidad. Se realiza con una interfaz amigable con distintos conectores, transformaciones y acciones, es libre de código sin tener que saber Apache Beam, transformaciones de datos para medir la calidad, probar y depurar Pipelines, estructura pipelines y la integración de nuestros SDK.

Tag o etiquetas para dar ciertas características a los pipeline, datos o esquemas, a las búsquedas de entidades manejar por palabras claves, nombre y tipos de las estructuras, el conjunto de datos y archivos manteniendo el linaje de datos.
Se pueden extender a ser reutilizados como al generar plantillas de los pipelines, plugins de plantillas previamente generados, widgets o compartir con alguien y tu solo la reutiliza.

Componentes

El principal componente es un pipeline en el cual se genera las conexiones solo arrastrando el elemento, llenando la información requerida usando API.

Donde se preparan los datos, se genera las transformaciones y enlazamos a las fuentes que serán llamadas en los Pipelines.

Las cuales son basado en las máquinas donde se van a ejecutar, la herramienta, la metada generado por el proceso que se está ejecutando.

Diccionarios de datos y metadatos, integración de solución basado en reglas de negocio, integración soluciones de MDM o de otro pipeline.

Corresponde a la construcción especializada de procedimiento de datos, tener procesamiento de eventos manejo de colas, pipelines, librerías.

Se maneja eventos, condiciones, triggers, antes de que se ejecute una acción, es muy usado en IoT, similar a los disparadores esperando una acción para ejecutar un proceso, implementando soluciones en tiempo real.

  • Control center es donde se ve todo el datafusion
    Lo que se está ejecutando
  • Pipelines
    Donde esta una vista previa para saber como se esta ejecutando, de la forma correcta o no se puede exportar en formato json para usarlo en otro lugar, tipos de conectores.
  • Wrangler
    Los conectores transformación de datos, la calidad de los datos y funciones adicionales
  • Metadata
    Búsquedas, tags y propiedades para el linaje de los campos y datos que obtenemos de los pipelines.
  • El Hub donde se van a almacenar los pipelines, plugins previamente desarrollados y las conexiones a otras fuentes de información
    Plugins, casos de uso o pipelines de otros usuarios para reusarlos.
  • Manejo de Entidades
    Se puede crear pipeline, importarlos, agregar colecciones de datos, plugins, driver, librerías o directrices
  • Consola administrativa para ejecución de nuevos pipelines
  • Manejo de servicios y métricas, configuración de nombres, perfiles computacionales, referencias, artefactos o servicios rest, sabiendo los errores, la cantidad de procesos satisfactorios.

Es un orquestador dividido en cuatro partes, lo realiza de forma automática, el cual ordena a Dataproc Dataflow, Cloud stroage a realizar distintas actividades.

Son gráficos directos acíclicos, tiene un entorno que crea entornos administrados de apache airflow, el servidor de cada uno y los DAG que pertenecen a las secuencias de ejecución por composer que habilito el webserver y folder están separados.

Esta escrito en Python, pero al elegir el dag’s se transforma en una representación grafica del pipeline, siendo un grafo, puede ser un disparador el cual mueve la información.
Independiente del tamaño del proceso solo tendremos un hilo del proceso por workflow.
Puede utilizar operadores de otras nubes como Azure, AWS, podemos mezclar operadores de BigQuery, CloudStorage u otros servicios de GCP. Conectando CluodComposer a BigQuery todo esto se realiza en segundo plano, podemos parametrizar las consultas usando SQL o el uso de macros.

Conoce más:

Registrate en el programa de Data Engineering en GCP.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store