Principales categorías de herramientas ETL – Parte II

En la anterior entrada del blog, Principales categorías de herramientas ETL, se introdujeron dos tipos de herramientas de ETL, las Enterprise Software y las Open Source. En esta entrada se presentarán los otros dos tipos de herramientas ETL: las personalizadas y los servicios en la nube.

ETL Personalizada

Muchas compañías usan lenguajes de programación de propósito general para implementar sus propias herramientas de ETL. Esta opción aporta gran flexibilidad, pero también requiere un mayor esfuerzo, ya que se carece de las pautas que cualquier herramienta establece. Este enfoque también requiere que los usuarios realicen su propio mantenimiento y mantengan un desarrollo continuo. Por estos motivos, los usuarios a menudo encuentran difícil disponer de ayuda fuera de su propio equipo. En este punto, es necesario mencionar que para crear una ETL siguiendo este modelo, no es necesario aunque sí posible, usar un framework para el procesamiento de la misma.
Ejemplos de lenguajes y frameworks asociados al tipo de ETL personalizadas son:

Python Python es un lenguaje de programación de propósito general. Se ha convertido en una herramienta popular para realizar tareas de ETL debido a su facilidad de uso y a las múltiples bibliotecas existentes para acceder a bases de datos y tecnologías de almacenamiento.
Java Java es otro lenguaje de propósito general que se puede usar para construir el procesamiento de ETL. Java tiene un amplio soporte para diferentes fuentes de datos y transformación de los mismos.
Spark y Hadoop Spark y Hadoop son frameworks que trabajan con grandes conjuntos de datos en grupos de computadoras. Facilitan la aplicación del potencial de muchas máquinas para realizar de forma paralela el procesado de la información. Esta capacidad permite evitar el procesado de una gran volumetría por una única máquina.

ETL como Servicios en la Nube

Amazon AWS, Google GCP y Microsoft Azure ofrecen sus propias capacidades de ETL como servicios en cloud. Estos servicios proporcionan integraciones ajustadas a otros servicios y precios basados ​​en el uso efectivo de los mismos. La mayor desventaja de estas soluciones es que solo funcionan en el marco del proveedor de la nube.
Ejemplos de servicios ETL en la nube:

AWS EMR Elastic MapReduce es la oferta de Hadoop proporcionada por AWS. Las empresas que usan Hadoop para implementar sus ETL, pueden optar por EMR para la ejecución en AWS. Al igual que con cualquier distribución de Hadoop, hay varias herramientas disponibles, incluidas Hive y Spark. Esta solución es potente, escalable y capaz de trabajar con datos estructurados y no estructurados.
AWS Glue Es un servicio AWS totalmente administrado y está dirigido a desarrolladores. Se integra con otros servicios de Amazon, de almacenamiento como S3, RDS y Redshift, y de otros propósitos, como Lambda. Glue se puede conectar a fuentes de datos locales para migrar sus datos a la nube. Las ETL se escriben en Python y se ejecutan usando Apache Spark y PySpark.
Azure Data Factory Data Factory es un servicio totalmente administrado que se conecta a una amplia gama de fuentes de datos tanto en la nube como en las instalaciones. Es capaz de copiar, transformaralmacenar los datos en los servicios destino de Azure. Data Factory también admite Hadoop, Spark así como matching learning para la  transformación.
Google Cloud Dataflow Dataflow es un servicio totalmente administrado dirigido a desarrolladores para el diseño de trabajos ETL continuos y por batch. Dataflow proporciona API para Java y Python. Los desarrolladores pueden así conectarse a las fuentes de Google Cloud, aplicar transformaciones y guardar datos en otros destinos de Google Cloud. Las API de Dataflow se basan en Apache Beam.

El Futuro de las ETL

El modelo ETL ha estado en uso durante más de 30 años. Leer datos de diferentes fuentes, realizar transformaciones y cargar los resultados en un sistema de almacenamiento orientado a su análisis. En la actualidad, el hardware moderno y el procesamiento distribuido, facilitan la aparición de nuevas formas de implementación. Estos nuevos modelos son cada vez más variados, potentes y flexibles, permitiendo la elección y diseño de los componentes necesarios.