Análisis OLAP Rápido de Grandes Datos en Delta Lake con Apache Spark SQL y Presto


Hola ya saben cómo siempre escribiendo completamente solo sin ayuda de nadie espero puedan hacerme una donación


En este artículo, exploraremos cómo optimizar las consultas SQL en un almacén de datos de grandes volúmenes utilizando Delta Lake, con soporte para transacciones ACID, de manera aún más eficiente gracias a Apache Presto. Acompáñanos a descubrir la sinergia entre Apache Spark y Presto en Delta Lake para acelerar los procesos OLAP al trabajar con Big Data. OLAP y el Esquema Estrella para Informes de BI sobre Big Data Consideremos una tarea típica de BI en la que se deben generar informes agregados complejos sobre las ventas de productos de diversas marcas y categorías. Los datos se estructuran en columnas: Fecha (Date), Marca (Brand), Categoría (Category), Producto (Product) y Venta (Sale). El enfoque clásico para modelar datos multidimensionales, comúnmente utilizado en almacenes de datos (DWH), implica la creación de tablas de dimensiones y hechos, donde se almacenan las claves. En el caso del esquema "estrella", las tablas de dimensiones pueden incluir tablas de fechas (Dim Date), categorías (Dim Category), entre otras, mientras que la tabla de hechos sería las ventas (Sale). Así, la tabla de hechos (el centro de la estrella) contiene datos agregados para la elaboración de informes, y las tablas de dimensiones denormalizadas (los rayos) describen los datos almacenados. Esto permite iniciar procesos de análisis OLAP (Online Analytical Processing) para consolidar el almacén en cubos con agregación previa para calcular indicadores multidimensionales complejos. Simplificar este proceso, al tiempo que se acelera el trabajo con grandes datos, se puede lograr creando un conjunto de datos agregados por columnas con una sola tabla y expandiéndola según las necesidades. Fundamentos de OLAP: El Esquema Estrella para Informes de BI La agregación SQL de datos en Delta Lake con Apache Spark y Presto permite la ejecución de consultas analíticas rápidas y flexibles mediante la agregación de datos con GROUPING SET, que genera un resultado en forma de una tabla combinada creada por diferentes grupos de un conjunto de datos completo. En el ejemplo con las columnas {Date, Brand}, {Brand, Category} y {Category}, se vería así: sql

SELECT Date, Brand, Category, SUM(Sale) AS Sum_Sale FROM data GROUP BY GROUPING SETS ( (Date, Brand), (Brand, Category), (Category) )

Luego, se puede filtrar el resultado y obtener otro informe del mismo conjunto de datos. Gracias a la estructura en columnas de Delta Lake, almacenar tales datos es más eficiente y ocupa menos espacio en comparación con las bases de datos relacionales. Diferentes Variantes de Informes de BI a partir de un Conjunto de Datos Previamente Agregado La agregación previa de datos en Delta Lake mediante Spark SQL se verá así: python

df = sparkSession.read.format("delta") \     .load(read_path) \     .select(col('data.*')) df.persist() df.createOrReplaceTempView("dataset") result = sparkSession.sql(""" SELECT Date, Brand, Category, SUM(Sale) AS Sum_Sale FROM dataset GROUP BY GROUPING SETS (     (Date, Brand),     (Brand, Category),     (Category) ) """)

Escritura de resultados en Delta Lake con PySpark: python

Copiar código result.write.format('delta').mode("overwrite") \     .save(write_path)

Aumentar la velocidad de ejecución de consultas SQL se puede lograr con Apache Presto, que permite consultar datos sin necesidad de copiarlos o moverlos. Presto está optimizado para consultas SQL desde múltiples fuentes, incluidas bases de datos relacionales y NoSQL, lo que lo convierte en una herramienta ideal para ejecutar consultas analíticas distribuidas en paralelo y optimizadas para baja latencia. Ejemplos Adicionales Ejemplo 1: Consultar Ventas por Categoría Específica Para obtener datos sobre las ventas de una categoría específica sin importar la fecha y la marca, la consulta sería: sql

Copiar código SELECT Category, SUM(Sale) AS Total_Sale FROM dataset WHERE Category = 'Electronics' GROUP BY Category

Ejemplo 2: Obtener Ventas Totales de Productos en Todas las Categorías Para obtener las ventas totales de productos agrupadas por todas las categorías, se podría utilizar: sql

SELECT Category, SUM(Sale) AS Total_Sale FROM dataset GROUP BY Category

Conclusión Este enfoque combina la velocidad de Apache Spark para cálculos y la potencia de Delta Lake como almacén de columnas de Big Data, junto con la flexibilidad del motor SQL Presto, para acelerar los informes OLAP de grandes datos mediante su agregación previa. Esto facilita enormemente el trabajo de los analistas de datos al buscar información valiosa para el negocio en enormes volúmenes de datos, sin sobrecargar al ingeniero de datos.

Autor Donal Sandro Noblejas Huaman

Lima Perú

Inicia sesión para ver o añadir un comentario.

Más artículos de Donal sandro Noblejas Huaman

Otros usuarios han visto

Ver temas