Data Fusion es un servicio gestionado de Google para la integración de datos. Es una herramienta potente, pero medianamente reciente y algo desconocida dentro del portfolio de GCP, así que esperamos que este post ayude a despejar la incógnita que para mucha gente es Data Fusion.
Cloud Data Fusion es un servicio gestionado ofrecido por Google Cloud Platform para el procesado e integración de datos. Es la versión gestionada de Google de la plataforma open source CDAP.
Según la propia web de Google: “Cloud Data Fusion es un servicio de integración de datos empresariales nativo de la nube y completamente administrado para compilar y administrar canalizaciones de datos con rapidez”.
Visto de otra manera, es un servicio gestionado que permite crear y gestionar procesos de ingesta de datos de múltiples fuentes con un editor visual además de proporcionar metadatos de forma casi automática.
Cloud Data Fusion tiene tres partes fundamentales:
- Pipelines: desarrollo sin código de pipelines de procesado de datos con plugins para integrarse con un gran número de fuentes de datos.
- Wrangler: una herramienta para el tratamiento de ficheros y datos de entrada.
- Metadata: análisis de linaje de datos ingestados por Data Fusion.
Antes de entrar en detalle en las capacidades de Data Fusion, tal vez hay que responder a otra pregunta.
Data Fusion no es serverless. Es un servicio gestionado. Para utilizarlo, es necesario crear una instancia de Data Fusion. Al ser gestionado no hay que preocuparse por dónde corre esa instancia, aunque sí puede ser necesario actualizar la versión. Al destruir la instancia se pierde toda la información que contiene, pipelines y metadatos.
Además, los pipelines se ejecutan por defecto en un clúster Dataproc efímero, es decir, que se crea y se destruye por cada pipeline que se ejecuta. El tamaño de los clúster usados dependerá del nivel de pago elegido. También existe la posibilidad de ejecutar pipelines en otros clústers o en clusters Dataproc permanentes.
El desarrollo de pipelines en Data Fusion se hace con una interfaz gráfica, uniendo componentes (cajas) de diversos tipos, de modo que, en principio, no sean necesarios conocimientos de programación para crear procesos de ingesta e integración de datos.
Esto último es discutible: al menos hace falta un cierto nivel de conocimientos técnicos. Lo que sí hace una solución sin código como ésta es que el desarrollo sea más rápido y no haya que preocuparse por testear ni mantener el código, lo que se traduce en menos esfuerzo necesario para poder tener una solución de ETL/ELT.
Además, abstrae a los usuarios de la complejidad que puede tener un sistema de procesamiento paralelo como es Apache Spark.
En el esquema siguiente se muestra la creación de un pipeline sencillo. Normalmente la salida de una etapa es la entrada de la siguiente. Tiene dos orígenes de datos (Sources) en verde, uno de BigQuery y otro de GCS. Dos destinos (Sink) en morado, uno a GCS y otro a BigQuery. También tiene dos etapas de transformación en azul y un colector de errores que es un componente especial.
Este pipeline lee ficheros de entrada de GCS. Este archivo puede ser por ejemplo un CSV, que se parsea y se limpia en la etapa “Wrangler”, que se verá en detalle un poco más adelante. El Wrangler también tiene un mecanismo para mandar los registros que no cumplan las condiciones que se establezcan a un colector de errores.
Estos errores se persisten en GCS en este caso. Después de las transformaciones del Wrangler, se utiliza un componente para hacer Join de esos datos contra una tabla de BigQuery. Por último se guardan los resultados en una tabla BigQuery.
Este es un pipeline es un ejemplo sencillo de lo que puede hacer Data Fusion. Pero el potencial de Data Fusion está en todas las integraciones que tiene. Además de los Sources y Sinks disponibles, existen multitud de plugins que se pueden añadir a los pipelines para la integración de otras fuentes de datos.
Kinesis, S3, Cassandra, MySQL, Kafka, Hive, sftp, MariaDB o PostgreSQL son algunos de los ejemplos de fuentes de datos con las que se puede integrar Data Fusion. En los plugins también se pueden encontrar otro tipo de funciones como la capacidad de comprimir y descomprimir archivos.
Entre los plugins hay también una pestaña para la integración con datos SAP para algunas fuentes SAP. Además de todos los ya disponibles, existe la posibilidad de crear nuestros propios plugins.
Los pipelines se pueden programar periódicamente, ejecutar de forma puntual o incluso existe la posibilidad de encadenar pipelines, para que un pipeline se ejecute cuando otro falle, termine o se pare. También existe la posibilidad de manejarlos con el API REST.
La herramienta de Wrangler permite hacer transformaciones sobre los datos. Se pueden hacer muchas operaciones sencillas con la GUI. Operaciones como parsear ficheros de tipos comunes, cambiar el tipo de dato de una columna, filtrar datos o combinar columnas.
Además tiene muchas capacidades que están más ocultas utilizando JEXL. Por ejemplo, se puede añadir una columna con la fecha actual, hacer cálculos con fechas o rellenar una columna según expresiones lógicas que involucren a otras columnas.
La tercera “pata” de Cloud Data Fusion es la posibilidad de explorar linaje del dato según metadatos de forma semiautomática. Esta capacidad permite agregar metadatos según las etiquetas de referencia que se hayan usado en los pipelines.
De esta forma, una vez los pipelines se hayan ejecutado, se podrá estudiar el linaje del dato sin dedicar más esfuerzo a crear metadatos. Esto permite incluso explorar el linaje de datos a nivel de campos. En la documentación podemos encontrar una imagen muy ilustrativa sobre ello:
La capacidad de poder estudiar el linaje del dato está muy infravalorada y puede ahorrar muchos dolores de cabeza, sobre todo cuando ha pasado un tiempo desde el desarrollo original y no está muy claro cómo pueden afectar nuevos cambios sobre pipelines ya establecidos.
Dicho esto, hay que ser muy cuidadoso con los valores asignados en las referencias, puesto que los pipelines desplegados no se pueden editar y una etiqueta mal puesta puede causar confusión a la hora de observar el linaje del dato.
Google Cloud Data Fusion tiene un modelo de pago por uso y tres “ediciones” o “tiers”: Developer, Basic y Enterprise, pensadas para diferentes usos. Las diferencias principales entre ellas son la disponibilidad de la instancia y las opciones permitidas en las que correr los pipelines.
La edición Developer ejecuta los pipelines en un clúster efímero de Dataproc de un nodo, la Basic lo mismo pero de dos nodos y la Enterprise permite dimensionar el clúster. Los precios a día de hoy se pueden consultar en esta tabla:
Hay que tener en cuenta que para sacarle partido a Data Fusion, incluyendo la posibilidad de programar pipelines y consultar metadatos, es necesario tener la instancia corriendo 24/7. A estos costes hay que añadirle el coste que se incurre en Dataproc al ejecutar los pipelines y el coste de otros servicios relacionados. Más información se puede encontrar en la documentación.
Google Cloud Data Fusion es una herramienta para la integración de datos, principalmente para el manejo de procesos ELT/ETL. Además de esta herramienta, hay otras soluciones para la integración de datos en GCP, aunque sea de formas distintas.
Dataprep es quizá la herramienta más parecida a Cloud Data Fusion, pero es más limitada. Está más centrada en la parte del tratamiento de datos, pero también permite la creación de pipelines mediante una herramienta visual.
Por tanto, la parte de “Wrangler” de datos está más pulida en Dataprep y parece que tiene más capacidades, al menos en la parte visual. La creación de pipelines también se hace con un editor visual, pero no tiene las capacidades de integración de Data Fusion.
Una particularidad de Dataprep es que no es propiedad de Google, sino de otra compañía, lo que hace necesario compartir los datos con un tercero. Esto puede ser un impedimento en muchos casos. Además, tienen un modo de pago por licencias. Por último, destacar que los pipelines de Dataprep corren en Dataflow en vez de en Dataproc.
Otra opción es no optar por una herramienta visual de gestión de pipelines y utilizar directamente Dataflow, junto con las herramientas que sean necesarias. Por ejemplo, se podría usar Cloud Functions o Cloud Tasks para ejecutar pipelines de Dataflow.
Esta opción ofrece más control a bajo nivel y puede que algo más de flexibilidad en ciertos casos. Las pegas son que se pierde un poco la capacidad de integrar todo en la misma herramienta, que se necesita conocimientos de programación y que no se puede disponer de los plugins de integración que tiene Data Fusion.
Por último, se puede mencionar Cloud Composer como herramienta de orquestación de procesos. Destacar que Cloud Composer no sustituye exactamente a Data Fusion, de hecho se pueden combinar, como se sugiere en este artículo.
Además, si quieres seguir profundizando en el tema, en este artículo te contamos algunos trucos y consejos que seguro que son muy útiles.
Google Data Fusion es una herramienta que tiene mucho potencial. Permite integrar datos de una gran cantidad de fuentes distintas, tanto de Google como de otras nubes y de sistemas on premise. Una vez están desplegados y programados los pipelines es un sistema robusto y fácil de manejar.
Además permite crear pipelines avanzadas aislando al desarrollador de mucha de la complejidad que tiene un sistema de estas características. Por otro lado, el desarrollo se hace de forma visual lo cual, en teoría, permite a usuarios menos especializados desarrollar proyectos. También ofrece herramientas de metadatado automático, que es una tarea importante que se suele dejar muy de lado en la mayoría de proyectos.
Dicho esto, la sensación que deja Cloud Data Fusion es que no se ha terminado de explotar su potencial. No es una solución serverless, lo que hace que, por ejemplo, no se pueda usar el componente Wrangler para parsear ficheros o crear pipelines si la instancia no está corriendo y también tiene el riesgo de perder trabajo si se borra la instancia.
Esto, unido a que los procesos sólo funcionan con Dataproc y no con Dataflow, hace que sea una herramienta con un coste apreciable, lo cual puede ser una barrera de entrada para interesarse por esta herramienta.
También se puede mencionar que la interfaz no es la más intuitiva y la curva de aprendizaje es un poco alta. Aunque no haya que ser un experto en Big Data es imprescindible tener conocimientos técnicos.
Además, la documentación de Google es escasa e incluso la que hay en CDAP no es suficiente. Por ejemplo, el Wrangler tiene mucha más capacidad de la aparente, pero es necesario buscar mucho para encontrarla. También puede ser difícil depurar errores de pipelines y del propio Data Fusion. Dicho esto el soporte ofrecido por Google es excelente.
Resumiendo, Data Fusion es una herramienta potente, que puede cubrir las necesidades de un amplio número de proyectos pero a la que le vendría bien una apuesta más decidida por parte de Google que la hiciera integrarse de forma más natural con el resto de sus servicios y que puliera algunos aspectos.
Tell us what you think.