Sabemos que existe una gran cantidad de productos en el ecosistema de la ingeniería de datos para realizar el tratamiento de los datos de una empresa y que la mayoría de ellos proporciona las herramientas necesarias para poder llevar a cabo muchos tipos de tareas (conversión de tipos, limpieza de datos, validación, etc.). Sin embargo, ¿cuándo es mejor utilizar una u otra? ¿Qué ventajas e inconvenientes tiene cada una? ¿Tienen algún coste asociado? ¿Puede usarlas una persona de cualquier perfil técnico? ¡Tenemos muchas preguntas más!
A continuación, responderemos a todas estas cuestiones que nos hemos ido planteando. Vamos a explorar algunas de las herramientas más populares a día de hoy y recopilaremos una serie de aspectos clave en una tabla.
Pentaho PDI
Entre la suite de herramientas de Pentaho encontramos Pentaho Data Integration (PDI) o Kettle, que proporciona utilidades para la integración y transformación de los datos (ETL) desde distintas fuentes. Su empleo está enfocado a un perfil de analista de datos, aunque cualquier usuario que tenga habilidades en Business Intelligence puede utilizarlo, ya que proporciona una interfaz gráfica de usuario.
PDI es un sistema de código abierto y está diseñado para procesar datos estáticos. Para ello, emplea modelos de transformación basados en filas. Puede recoger los datos desde un sistema de almacenamiento cloud, como AWS, en bases de datos o local en varios formatos (TXT, JSON, CSV, etc.) y cargarlos en un sistema de almacenamiento como un Data Warehouse o un Data Mart cuando han sido transformados.
Entre los inconvenientes que podemos encontrar en el empleo de Pentaho destaca que, pese a que presenta una interfaz gráfica, su estética no es apta para todos los gustos y que su rendimiento es bajo en comparación con otras herramientas de ETL distribuidas. Además, cada una de las herramientas que ofrece la suite de Pentaho está diseñada por un desarrollador distinto, con lo que las visualizaciones de sus interfaces son radicalmente diferentes. Por otra parte, PDI presenta dos opciones de descarga, Pentaho Community Project y Pentaho Enterprise Edition: la primera es una opción totalmente gratuita, pero posee un conjunto de utilidades más reducido e incrementa el número de pasos del pipeline para la misma cantidad de tareas con respecto a la versión Enterprise, mientras que esta última proporciona el pack de utilidades completo, pero el precio no es público, sino que la empresa debe contactar para obtenerlo.
Apache Spark
El framework de computación distribuida Apache Spark nos ofrece utilidades para analizar y transformar grandes volúmenes de datos en un clúster de máquinas. Para su utilización, necesitamos un sistema para ejecutar el código como un notebook en una máquina en local o virtual como Databricks, ya que no posee una aplicación con interfaz gráfica de usuario, sino que proporciona APIs para Java, Scala, Python y R. Esto significa que su uso va dirigido a un perfil de desarrollador para alguno de estos lenguajes.
Spark nos permite usar el paralelismo de datos para optimizar la velocidad de procesamiento, lo que va acompañado de un uso enorme de memoria RAM y disco, a distribuir manualmente por el desarrollador. Esto quiere decir que se puede seleccionar qué datos quedarán en memoria o en el disco duro. Asimismo, tiene la ventaja de que todas sus utilidades se encuentran unificadas, con lo que, a diferencia de Pentaho, Spark puede aplicar todos los procesos ETL a un conjunto de datos y generar gráficos de éstos en un mismo pipeline de tareas. Además, puede trabajar con datos real-time. Se trata de software gratuito, ya que es un sistema open source y tiene una comunidad activa de desarrolladores que lo mantienen.
En contraposición, dado que no posee una interfaz gráfica y proporciona un sistema de configuración de los proyectos muy flexible, la complejidad de uso aumenta drásticamente con respecto a la herramienta Pentaho. Esto se debe a que requiere de habilidades de programación para alguno de los lenguajes descritos anteriormente y el conocimiento para configurar entornos de desarrollo. Además, el gran empleo de memoria para incrementar su velocidad puede dar lugar a que el ahorro de coste de software en términos finales conlleve un coste en equipos o recursos cloud.
Data Build Tool (DBT)
La última herramienta que veremos es DBT, que es un sistema open source que trabaja únicamente con SQL para realizar la transformación del dato, con lo que está enfocado a un perfil mixto entre los descritos para las dos herramientas que hemos visto anteriormente. Esto soluciona la complejidad de uso con respecto a Spark, aportando a su vez mayor flexibilidad que Pentaho en la construcción de pipelines de transformación y en la personalización de los modelos que contendrá. Además, su arquitectura por defecto permite estandarizar los procesos del workflow de transformación del dato, lo que facilita el mantenimiento del código, favorece su escalabilidad y permite su usabilidad. Para ello, emplea modelos, snapshots y macros de jinja que aportan flexibilidad a la hora de programar funcionalidades que solucionen necesidades concretas.
DBT Core es el sistema que se ubica de forma local en nuestra máquina y donde se encontrará el código de nuestro pipeline de transformación. Para proporcionar facilidad de uso al desarrollador, su arquitectura presenta un sistema directorios, donde se ubica cada tipo de recurso específico: analyses, macros, models, seeds y snapshots. También presenta sencillez en la generación de tests predefinidos en sus librerías o personalizados por el usuario.
Por otra parte, encontramos la plataforma DBT Cloud como sistema remoto, que puede conectarse al repositorio git donde almacenamos el código para ejecutar el proyecto y proporcionarnos una monitorización de los procesos del pipeline de transformación de los datos. Esto permite que se puedan rastrear posibles errores en el código de forma intuitiva. La sección más característica de esta plataforma es la documentativa, donde podremos encontrar una descripción sobre en qué consiste cada una de nuestras tablas, macros y snapshots, así como observar las columnas, las tablas de las que depende y detalles complementarios de la misma. Por último, cuenta con un grafo customizable por colores con la visión global de la solución implementada.
Tabla comparativa entre DBT, Pentaho y Spark
Utilidades / Herramientas | PDI | Spark | DBT |
¿A quién va dirigido? | Analista de datos | Desarrollador | Mixto |
Complejidad | Baja | Alta | Moderada |
Escalabilidad | Horizontal * | Horizontal | Horizontal * |
Flexibilidad | Baja | Alta | Alta |
Rendimiento | Bajo | Alto | Alto |
Datos real-time | No | Sí | No |
Open Source | Community Edition | Sí | Sí |
Conectividad Cloud | Sí | Sí | Sí |
Conectividad DBs | Sí | Sí | Sí |
Integración | Alta | Alta | Alta |
Interfaz gráfica | Sí | No | DBT Cloud |
Documentación personalizada | No | No | Sí |
Testing | Sí | Sí | Sí |
Estrategia ETL o ELT | ETL | ETL | ELT |
Coste | Personalizado | Gratuito | ** |
* Es utilizable en entornos de computación distribuida, pero podría requerir de configuración adicional.
** DBT Core y DBT Cloud para un desarrollador son versiones gratuitas. No obstante, DBT Cloud para equipos y la versión Enterprise tienen un coste asociado que puede encontrarse en la web.
Conclusión
En este artículo hemos visto tres herramientas con ciertas similitudes y diferencias, que tratan de resolver la tarea de la transformación de los datos recogida en el área del Big Data. A la hora de elegir una de ellas para un proyecto que se esté desarrollando hay que tener en cuenta numerosos factores que hemos resumido en la tabla anterior.
De manera general, PDI está más enfocado a un perfil de analista de datos y es el que tiene una curva de aprendizaje menos elevada, con lo que se podría utilizar en proyectos ETL que tengan menor complejidad en las transformaciones de los datos.
Si, por el contrario, somos desarrolladores experimentados en algunos de los lenguajes de programación descritos y trabajamos con datos real-time con datos que requieran transformaciones muy complejas, quizás la mejor alternativa es Spark.
Finalmente, si nuestros datos poseen gran complejidad, no son real-time y queremos ahorrar en tiempo en el desarrollo usando SQL, la mejor alternativa es DBT.