SETL: Scala ETL Framework para Big Data

En el negocio de los datos transaccionales de las entidades financieras nos encontramos con un volumen de datos que sugieren el uso de herramientas especializadas para paliar problemas en el performance del procesamiento de estos. Usualmente, los pipelines de ingeniería de datos implican la extracción en fuentes, la transformación - que puede ser tan compleja como sea necesaria - y la carga de los datos en el data storage final, a este proceso se le conoce como ETL (Extract-Transform-Load). Si bien, la manipulación de datos es básicamente la finalidad del rol del ingeniero de datos y se puede llevar a cabo bajo cualquier paradigma, es preferible establecer lineamientos que estandaricen y faciliten el desarrollo y el despliegue a producción.

Por su parte, Apache Spark es un engine de manipulación y análisis de datos que nos permite la manipulación de datos de manera masiva, resilente, paralela y distribuida. A diferencia de otros engines de ejecución, Spark nos permite controlar el uso de memoria y disco para el procesamiento de los datos de manera eficiente y nativa.

Estos dos conceptos convergen en SETL, que es un framework ETL para Scala que facilita la estructura, desarrollo, mantenimiento, reproducibilidad y despliegue de proyectos de procesamiento de datos masivos con Apache Spark con fuentes de datos como CassandraDB, DynamoDB, Delta Lake, conexiones JDBC, archivos de texto o binarios, y cuenta con la implementación de múltiples abstracciones y entidades que nos permiten construir un pipeline completo y controlar el flujo de ejecución de nuestro código de manera estricta. En este trabajo presentamos la implementación de un flujo de trabajo con SETL y los features más importantes que nos ofrece, más una implentación propia para fuentes Spark SQL en general, con énfasis en Hive.