¿Qué es un Delta Lake?

  • Artículos
  • Ingeniería de Datos

Introducción

Delta Lake es un framework de almacenamiento desarrollado en el lenguaje de programación Scala. Es una herramienta de código abierto para la arquitectura Lakehouse. Popular por sus integraciones con Spark, Flink, PrestoDB, Hive, entre otros, así como por su capacidad para poder realizar transacciones ACID. Ofrece un manejo escalable de metadata, versionado de snapshots, variaciones de esquema, entre otros, convirtiéndola en una herramienta robusta para la construcción de Data Lakehouses.

Data Warehouse

En primer lugar, tenemos una arquitectura Data Warehouse, pensada para soportar bloques de data estructurada y en dar soporte a las areas de reporteria y BI, centrándose en la generación de valor para los tomadores de decisiones. Esta arquitectura tiene un costo elevado para manejar data no estructurada o semi-estructurada, así como dificultades para incrementar en volumen y usuarios concurrentes.

Data Lake

En segundo lugar, consideremos una arquitectura Data Lake. Este sistema tiene como base el almacenamiento de data cruda (Estructurada, semi y no estructurada) y se centra en la disponibilización de la información para las áreas de Data Science y Machine Learning. Si bien cubre deficiencias de un Data Warehouse, no refuerzan la calidad de la data, consistencia, aislamiento y presenta dificultades para realizar mezclas de jobs en batch y streaming.

Arquitectura Lakehouse

Una alternativa para cubrir los gaps de las dos previas arquitecturas mencionadas es implementar ambos sistemas, con la finalidad de habilitar tanto al equipo de reporteria y BI como a los data scientists y machine learning engineers. Esta alternativa resulta en duplicidad de información y costos elevados de infraestructura. En este contexto, se presenta la arquitectura Lakehouse, como una alternativa que combina la flexibilidad y escalabilidad de los data lakes con la transaccionabilidad de los data warehouses.

La arquitectura lakehouse implementa las funcionalidades de estructuración de datos y de gestión de la información sobre la capa de bajo costo empleada en data lakes. Los diferentes equipos de data science, machine learning, BI y reportería tendrán acceso directo a la versión mas reciente de la información, como se muestra en la imagen.

Las funcionalidades clave que conforman la arquitectura lakehouse son:

  • Capas de metadata: Mediante el uso de archivos Parquet se almacena la metadata que guarda el versionado de la información y ofrece transacciones ACID
  • Optimización de queries: Mediante el cacheo de data en RAM/SSDs y ejecuciones vectoriales en CPUs modernos.
  • Acceso optimizado a herramientas de Data Science y Machine Learning: El uso del formato Parquet y compatibilidad con herramientas populares como Pandas, TensorFlow, PyTorch, entre otros.

Delta Lake

La arquitectura lakehouse previamente revisada se construye sobre Delta Lake, un framework o herramienta de trabajo construida sobre Apache Spark. Delta Lake emplea archivos Parquet para almacenar la data, as como logs de las transacciones y commits realizados a la misma.

El Delta Lake tiene 3 ambientes de manejo de data:

  • Bronze: Espacio de almacenamiento raw de la información. Se ingesta la data cruda sin modificaciones o refinamiento y se convierte los formatos a Delta Lake.
  • Silver: En este ambiente se realizan transformaciones, refinamiento y feature engineering. La data de este bloque puede ser tomada o consultada por los equipos de BI o Data Science
  • Gold: La etapa más refinada de la información. Se emplea principalmente para la generación de vistas finales de los datos, actualización de dashboards o entrega de valor a los equipos tomadores de decisiones.

Las funcionalidades principales de Delta Lake son las siguientes:

  • Transacciones ACID: Garantiza transacciones ACID en lectura y escritura. Esto significa que múltiples solicitudes de escritura pueden realizar modifiaciones simultáneas y los consumidores de la informacón podrán visualizar una versión consistente de la información, incluso si la tabla es modificada durante una ejecución
  • Metadata Escalable: Utiliza computación distribuida en Spark para gestionar la metadata de la información en escalas de petabytes con facilidad
  • Time Travel: Versionado de la información. De manera similar a git, Delta Lake cuenta con una funcionalidad de versionado, permitiendo revertir cambios, replicar versiones anteriores y generar experimentos reproducibles en el tiempo
  • Batch / Streaming unificado: Delta Lake utiliza el formato de streaming estructurado de Apache Spark, un engine de streaming en Spark SQL para computación de data. Esta funcionalidad permite unificar procesos batch + streaming y facilita la construcción de pipelines de data
  • Historial de auditoría: Todos los cambios en el delta lake son almacenados en una tabla de transacciones asociado a la tabla. Cada operación es versionada y puede visualizarse con el comando DESCRIBE HISTORY

Delta Lake In Cloud – Hands On

Empleando las plataformas cloud más populares (AWS, Azure, GCP), el proceso de implementación de un Delta Lake sigue los siguientes pasos:

  • Configuración de Apache Spark: Delta Lake interactua con Spark Scala o PySpark. Dependiendo del ambiente en uso se puede optar por Python o Scala.
  • Ingesta de la información: Desde un Data Lake existente o creando los ambiente Delta Lake (Bronze, Silver Gold) empleando S3 Buckets (AWS), Blob Storage (Azure) o Cloud Storage (GCP). La información puede ingestarse al Delta Lake en Batch o Streaming.
  • Creación y actualización de la información: Para crear tablas Delta, podemos emplear Spark SQL y manipular información de parquet, csv, json a delta. El framework posibilita creación, lectura, actualización y versionado de tablas anteriores (time travel).

Para más información, revisar el starter guide de delta:

Recomendaciones

Las principales fortalezas de la arquitectura lakehouse sobre Delta Lakes se encuentran en las transacciones ACID, la posibilidad de versionado (Time Travel), el manejo de metadata y la unificación batch-streaming, todo montado sobre un formato de código abierto y compatible al 100% con Apache Spark.

Dado que Delta Lake cubre un caso de uso donde disponibilización y transaccionalidad de la data es prioridad, la volumetría, aplicación y tipos de datos resultan relevantes al momento de considerar un warehouse, lake o lakehouse.

En casos donde se necesite una arquitectura doble (warehouse + lake) se debe considerar un lakehouse para evitar incurrir en duplicidad de data o costos adicionales.

Se recomienda revisar Snowflake, Splunk y Athena como alternativas a Delta Lake.

Caso de éxito – Columbia 2020

En el 2020, la compania de ropa deportiva, Columbia ofreció una charla en el AI Summit. Como parte de los desarrollos en data, Columbia requirió incrementar su capacidad para ser una empresa data driven, consolidar y entregar información corporativa y, finalmente, consolidar y crecer con un gobierno de datos sólido, alineado a sus procesos y productos.

Partieron de un Data Warehouse tradicional que consolidaba diferentes fuentes de información de sistemas legados, billing systems, CRMs y archivos planos, con los que el Warehouse conectaba herramientas de visualización.

Empleando Delta Lake, re-plantearon su arquitectura de datos, considerando los pipelines existentes, necesidades de acceso de negocio y seguridad. El resultado fue una plataforma unificada de datos sobre delta lake, con procesos de stream y batch, capas de conexión para analitica avanzada, visualizaciones y uso de servicios cloud.

Los resultados más representativos fueron los siguientes:

  • Los tiempos empleados para obtener data se redujeron de 1 semana a 1 día
  • Se llevó toda la información al Delta Lake y se disponibilizó masivamente. Se emplean microservicios para streaming
  • Se logró expandir el acceso a la data para necesidades del negocio, canales “self-served” y reportería
  • Se disponibilizaron recursos para interacción por parte de los Data Scientists

Para más información, consultar: