Spark DataFrames / SQL
En el notebook anterior hemos introducido Spark y el uso de RDD para interactuar con los datos. Tal como comentamos, los RDD permiten trabajar a bajo nivel, siendo más cómodo y eficiente hacer uso de DataFrames y el lenguaje SQL.
DATAFRAMES
Un DataFrame es una estructura equivalente a una tabla de base de datos relacional, con un motor bien optimizado para el trabajo en un clúster. Los datos se almacenan en filas y columnas y ofrece un conjunto de operaciones para manipular los datos.
El trabajo con DataFrames es más sencillo y eficiente que el procesamiento con RDD, por eso su uso es predominante en los nuevos desarrollos con Spark.
A continuación veremos cómo podemos obtener y persistir DataFrames desde diferentes fuentes y formatos de datos, para realizar transformaciones y análisis más avanzados.
Pasos previos
El contenido de esta práctica, incluido el notebook que utilizaremos, se encuentra disponible en el siguiente repositorio de GitHub: https://github.com/leo-narvaez/dataframes-spark. Puedes clonar este repositorio o simplemente revisar el código que se encuentra dentro del mismo.
Antes de comenzar a trabajar con DataFrames en Spark dentro de Databricks, es importante asegurarse de tener el entorno configurado correctamente. Para ello, sigue estos pasos previos:
Crea el entorno de Databricks:
- Verifica que tengas acceso a Databricks: Asegúrate de tener una cuenta activa en Databricks y que puedas acceder a tu espacio de trabajo.
- Crea un clúster en Databricks: Si aún no has creado un clúster, es importante hacerlo antes de cargar tus datos y comenzar a trabajar con ellos. Un clúster te permitirá ejecutar código distribuido en un entorno de Spark. Si necesitas ayuda con la creación y configuración de tu clúster, puedes seguir esta guía paso a paso sobre la instalación y configuración de clústeres en Databricks. Hasta el paso 2 o creándolo desde el mismo notebook.
Consejo: El clúster debe estar activo y en funcionamiento antes de continuar con los siguientes pasos. Puedes verificar su estado desde la interfaz de Databricks.
Configura tu notebook:
Crea un nuevo notebook en Databricks donde escribirás el código para interactuar con los DataFrames. Este notebook debe estar conectado al clúster que creaste previamente. Tienes el contenido de este notebook en el repositorio.
- Puedes importar el notebook, desde "File > Import > Notebook", y aquí cargamos el notebook de nuestro repositorio.
Carga de datos en DBFS (Databricks File System): Antes de poder trabajar con los datos, es necesario cargarlos en el sistema de archivos de Databricks (DBFS). Puedes cargar archivos desde tu computadora local o conectarte a fuentes externas, como bases de datos o almacenamiento en la nube. Agregare el contenido de mi repositorio.
Para cargar archivos desde tu computadora al DBFS:
- Dirígete a la opción de "File" en la barra lateral de Databricks.
- Selecciona la opción "Upload data to DBFS..." y sigue los pasos para cargar los archivos.
- Los archivos se almacenarán en el directorio predeterminado de DBFS (
/dbfs/
), en este caso cambiaremos la ruta para tener mas ordenado nuestros archivos dentro de DBFS.
Importante: Recordar el nombre de la carpeta que se crea para guardar los archivos necesarios, esta ruta la ocuparemos más adelante.
Una vez hayas cargado el notebook dentro de Databricks, sigue los pasos indicados en el mismo para comenzar a trabajar con los DataFrames. En el notebook encontrarás explicaciones detalladas y ejemplos de código que te guiarán a través de las distintas transformaciones y operaciones que puedes realizar sobre los datos.
Te recomiendo que ejecutes cada celda del notebook por tu cuenta para familiarizarte con el flujo de trabajo y entender cómo interactuar con los datos. Puedes experimentar con los ejemplos, modificar el código y probar diferentes transformaciones para obtener una comprensión más profunda del uso de Spark DataFrames y SQL.
Recuerda que la práctica te permitirá afianzar lo aprendido y aplicar las herramientas de Spark de manera más eficiente en proyectos futuros.
Creando Base de datos:
Se crea un nuevo notebook con la configuración básica para crear la tabla.
Modificamos esta parte del código para que nos funcione correctamente:
# CSV options infer_schema = "true" first_row_is_header = "true" delimiter = ";"
Después de esto vamos a limpiar un poco los datos:
from pyspark.sql.functions import trim df = df.withColumn("Country", trim(df.Country))
Continuamos hasta llegar a la consulta, nos mostrará así:
Vamos a crear visualizaciones a partir de esta consulta:
Aquí podemos crear las visualizaciones que queramos ajustando los parámetros según nuestras necesidades.
Si guardamos, lo tendremos disponible en las visualizaciones:
Además, con las tablas y/o gráficos que generamos dentro de Databricks, podemos generar un sencillo cuadro de mandos.
Vamos a crear un par de consultas, una para obtener las ventas medias por país:
%sql select Country, avg(Revenue) as ventas from pdi_sales_small_csv group by Country order by ventas desc
Podemos ver las visualizaciones de nuestra consulta:
Y otra para las unidas pedidas por cada país:
%sql select Country, sum(Units) as pedidos from pdi_sales_small_csv group by Country order by pedidos desc
Podemos ver las visualizaciones de nuestra consulta:
Agregaremos todo esto a un dashboard, para esto en la visualización guardada, hay un desplegable que nos permite agregar el notebook a un dashboard.