En este tutorial, te guiaré a través del proceso de configuración y trabajo con PySpark para realizar análisis de datos en un conjunto de datos de Kaggle. Esta guía está diseñada para principiantes que buscan adquirir experiencia práctica con PySpark. Utilizaremos el entorno de WSL Ubuntu, enfocándonos en pasos prácticos para comenzar. Aprenderás cómo instalar PySpark, configurar un entorno virtual y ejecutar scripts que se puedan replicar fácilmente.
Introducción a Apache Spark, SparkSQL, PySpark, RDDs y DataFrames
Apache Spark es un sistema de procesamiento distribuido de código abierto diseñado para manejar cargas de trabajo de big data de manera eficiente, con un enfoque en analizar grandes volúmenes de datos a escala. SparkSQL, PySpark, RDDs y DataFrames son componentes clave que permiten a los usuarios interactuar con los datos de manera efectiva.
- Apache Spark: Un framework de computación distribuida que proporciona la capacidad de procesar grandes volúmenes de datos en paralelo.
- SparkSQL: El módulo SQL de Apache Spark que permite consultar datos estructurados utilizando SQL.
- PySpark: La API de Python para Apache Spark, que nos permite utilizar las capacidades de Spark usando Python. En este tutorial, solo usaremos PySpark, sin instalar la distribución completa de Spark, porque nuestro objetivo es centrarnos en el uso práctico de Spark mediante scripts en Python.
Descripción del Proyecto
Nuestro proyecto se centrará en analizar el conjunto de datos «Most Streamed Songs» de Spotify, que se puede descargar desde Kaggle. Exploraremos los datos y realizaremos algunos análisis sencillos utilizando PySpark, aprovechando al máximo sus potentes capacidades para obtener información significativa. El entorno utilizado es WSL Ubuntu para usuarios de Windows, pero también incluiré sugerencias para usuarios de macOS.
¿Qué son RDDs y DataFrames?
Antes de sumergirnos en el análisis, repasemos dos conceptos clave en Apache Spark: RDDs y DataFrames.
- RDD (Resilient Distributed Dataset): RDD es la estructura de datos fundamental de Apache Spark, diseñada para manejar datos distribuidos de manera eficiente y permitir el procesamiento en paralelo. Es una colección de datos que se distribuye a través de un clúster y que se puede procesar en paralelo. Los RDD son excelentes para operaciones de bajo nivel y control total, pero pueden ser un poco complicados de manejar para los principiantes.
- DataFrames: Los DataFrames son una abstracción de nivel superior sobre los RDD, que ofrecen capacidades de consulta optimizadas y facilidad de uso, similar a trabajar con tablas en SQL. En este tutorial, utilizaremos DataFrames porque son mucho más fáciles de usar y Spark se encarga de gran parte del trabajo pesado en segundo plano. ¿Quién necesita el estrés de manejar operaciones de bajo nivel cuando puedes dejar que Spark haga el trabajo, cierto?
Al enfocarnos en los DataFrames, simplificaremos nuestro código y obtendremos resultados más rápido, sin preocuparnos demasiado por lo que ocurre en segundo plano. Piensa en los RDD como la base y en los DataFrames como la casa cómoda construida encima.
¿Por qué solo PySpark?
En lugar de instalar Apache Spark completo, utilizamos PySpark porque es más fácil de configurar, especialmente cuando se trabaja en un entorno de desarrollo local. PySpark te da acceso directo a las características de Spark usando Python, lo cual es ideal para aprender Spark sin una configuración distribuida compleja. Dado que nuestro enfoque principal es el aprendizaje, una configuración local con PySpark es suficiente.
Configuración del Entorno
Requisitos
- WSL Ubuntu: Asegúrate de que WSL (Subsistema de Windows para Linux) ya esté configurado en tu máquina con Windows. Esta guía no cubrirá la instalación de WSL Ubuntu.
- Python 3: Python 3 debe estar instalado a nivel del sistema en WSL. Si Python 3 aún no está instalado, puedes instalarlo ejecutando:
sudo apt-get update
sudo apt-get install python3
Una vez instalado, puedes confirmarlo ejecutando este comando:python3 --version
Instalación de PySpark
Comencemos configurando un entorno virtual e instalando PySpark. No te preocupes, no es tan complicado como suena: piensa en ello como crear una caja de arena donde puedes jugar sin alterar tu sistema principal.
Paso 1: Crear un Directorio del Proyecto
Primero, creemos un directorio donde se almacenarán todos nuestros archivos del proyecto. Abre tu terminal y ejecuta los siguientes comandos para comenzar. No te preocupes, es como organizar tu escritorio: mantener todos los archivos en un solo lugar facilita la vida.
mkdir pyspark_shell
cd pyspark_shell
Paso 2: Crear y Activar el Entorno Virtual
A continuación, configuraremos un entorno virtual para mantener nuestras dependencias del proyecto bien organizadas.
Asegúrate de que el paquete python3-venv
esté instalado antes de configurar el entorno virtual. Este paquete proporciona las herramientas necesarias para crear entornos virtuales. Ejecuta este comando para instalarlo:
sudo apt-get install python3-venv
python3 -m venv pysparkshell_env
source pysparkshell_env/bin/activate
Esto creará y activará un entorno virtual llamado pysparkshell_env
. Deberías ver (pysparkshell_env)
al inicio de tu línea de comando, lo que indica que el entorno está activo.
Paso 3: Instalar Java
Antes de instalar PySpark, necesitamos instalar Java, ya que es necesario para ejecutar Spark. Utiliza el siguiente comando para instalar Java:
sudo apt-get install default-jdk
Una vez instalado Java, establece la variable de entorno JAVA_HOME
para ayudar a PySpark a localizar la instalación de Java.
export JAVA_HOME=/usr/lib/jvm/default-java
Este comando instalará el Kit de Desarrollo de Java (JDK) predeterminado, que proporciona el entorno de ejecución de Java necesario para PySpark.
Paso 4: Instalar PySpark
Ahora que el entorno virtual está listo y Java está instalado, podemos instalar PySpark mediante pip
. A veces, puedes encontrar un error relacionado con bdist_wheel
al instalar PySpark. Para evitar esto, primero instala wheel
:
pip install wheel
Después de instalar wheel
, procede a instalar PySpark: Es como agregar el ingrediente final a nuestra receta: ¡es hora de juntar todo!
pip install pyspark
Este comando instalará PySpark y sus dependencias. Para verificar la instalación, ejecuta:
pyspark --version
Deberías ver información sobre la versión de PySpark que se ha instalado.
Usuarios de macOS
Si estás usando macOS, los pasos son en gran medida similares. Abre tu terminal y sigue los mismos pasos para crear un directorio de proyecto, entorno virtual e instalar PySpark. Asegúrate de tener instalado Homebrew para gestionar paquetes como Python si es necesario.
Descargar el Conjunto de Datos de Kaggle
Nuestro proyecto utilizará el conjunto de datos «Most Streamed Songs» de Spotify, que se puede descargar desde este enlace. Necesitarás crear una cuenta en Kaggle si aún no lo has hecho.
Para facilitarte las cosas (porque, ¿a quién no le gusta un atajo?), también proporcionamos el archivo CSV adjunto a esta publicación, para que puedas descargarlo directamente sin necesidad de pasar por Kaggle.
Una vez que tengas el archivo, colócalo en tu directorio del proyecto (es decir, el directorio pyspark_shell
).
Iniciando PySpark Shell y Cargando el Conjunto de Datos
Una vez que PySpark esté instalado y tu conjunto de datos esté listo, podemos comenzar a analizarlo usando PySpark Shell.
Paso 1: Abrir PySpark Shell
Para abrir el shell de PySpark, simplemente ejecuta:
pyspark
Este comando abrirá el shell interactivo de PySpark, donde podrás ejecutar comandos de Spark de forma interactiva.
Paso 2: Cargar el Conjunto de Datos
Primero, cargaremos el conjunto de datos en un DataFrame de Spark; piensa en un DataFrame como una hoja de cálculo de Excel, pero más genial y mucho más potente. Ingresa los siguientes comandos en el shell de PySpark:
# Cargar el conjunto de datos CSV
songs_df = spark.read.csv("Spotify_Most_Streamed_Songs.csv", header=True, inferSchema=True)
# Mostrar las primeras filas del DataFrame
songs_df.show(5)
En este código:
- Cargamos el conjunto de datos CSV en un DataFrame llamado
songs_df
utilizandoread.csv()
conheader=True
para incluir los nombres de las columnas einferSchema=True
para inferir los tipos de datos. - Finalmente, usamos
show(5)
para mostrar las primeras filas del DataFrame.
Paso 3: Realizar Análisis Básico de Datos
Ahora que tenemos los datos cargados, hagamos un análisis básico para comprender su estructura.
3.1: Inspeccionar el Esquema
Para inspeccionar el esquema del conjunto de datos (es decir, los nombres de las columnas y los tipos de datos), ejecuta:
songs_df.printSchema()
3.2: Contar el Número de Registros
Para contar el número de registros en el conjunto de datos:
print(f"Total de registros: {songs_df.count()}")
3.3: Consultas Básicas Usando SparkSQL
También podemos registrar el DataFrame como una vista temporal para usar consultas SQL para el análisis de datos:
songs_df.createOrReplaceTempView("songs")
# Consulta de ejemplo para encontrar los 5 artistas con el mayor número de streams
artist_streams = spark.sql("SELECT `artist(s)_name`, SUM(streams) AS total_streams FROM songs GROUP BY `artist(s)_name` ORDER BY total_streams DESC LIMIT 5")
artist_streams.show()
Este código utiliza createOrReplaceTempView
para registrar el DataFrame como una vista temporal llamada songs
, lo que nos permite ejecutar consultas SQL contra el DataFrame. La consulta de ejemplo encuentra los 5 artistas con el mayor número de streams.
Resumen
En este tutorial:
- Configuramos un entorno virtual de Python e instalamos PySpark en WSL Ubuntu.
- Descargamos un conjunto de datos de Kaggle y lo cargamos en PySpark.
- Utilizamos PySpark y SparkSQL para realizar un análisis básico de datos.