PySpark

Tutorial PySpark: Instalación de PySpark

Instala PySpark y Apache Spark de forma fácil y rápida. Configura MLlib en entornos locales y distribuidos, soluciona errores comunes y cumple con los requisitos clave.

Aprende PySpark GRATIS y certifícate

Descarga e instalación de PySpark

Para comenzar a trabajar con PySpark y aprovechar las capacidades de MLlib, es necesario instalar la biblioteca en nuestro entorno de desarrollo. A continuación, se detallan los pasos para realizar una instalación correcta y actualizada de PySpark.

Es recomendable utilizar Python 3.9 o superior para asegurar la compatibilidad con las últimas funcionalidades de PySpark.

Instalación mediante pip:

La forma más sencilla de instalar PySpark es utilizando pip, el gestor de paquetes de Python. Ejecutando el siguiente comando en la terminal, se instalará la versión más reciente de PySpark disponible en PyPI:

pip install pyspark

Este comando descargará e instalará todas las dependencias necesarias para que PySpark funcione correctamente. Es importante asegurarse de que pip está actualizado antes de proceder con la instalación:

pip install --upgrade pip

Configuración de variables de entorno:

Aunque con la instalación vía pip no es estrictamente necesario configurar variables de entorno, en entornos avanzados puede ser útil establecer la variable **SPARK_HOME** para apuntar a la carpeta de instalación de Spark:

export SPARK_HOME=$(python -c "import pyspark; print(pyspark.__path__[0])")
export PATH=$SPARK_HOME/bin:$PATH

En sistemas Windows, se puede configurar esta variable mediante las propiedades del sistema.

Verificación de la instalación:

Para confirmar que PySpark se ha instalado correctamente, se puede iniciar una sesión interactiva ejecutando:

pyspark

Esto abrirá una consola de PySpark con el **SparkSession** disponible. Alternativamente, se puede verificar la versión instalada:

import pyspark
print(pyspark.__version__)

Este código mostrará la versión de PySpark, confirmando que la instalación ha sido exitosa.

Uso de entornos virtuales:

Es recomendable utilizar entornos virtuales para aislar las dependencias de cada proyecto. Se puede crear un entorno virtual con venv:

python -m venv venv
source venv/bin/activate    # En Unix o macOS
venv\Scripts\activate       # En Windows

Después de activar el entorno virtual, se procede a instalar PySpark con pip como se indicó anteriormente. Esto garantiza que las dependencias no afecten a otros proyectos y facilita la gestión de versiones.

Requisitos adicionales:

Para aprovechar al máximo PySpark, es necesario tener instalado el Java Development Kit (JDK), preferiblemente JDK 15 o superior. PySpark se ejecuta sobre la Máquina Virtual de Java (JVM), y contar con una versión actualizada asegura un rendimiento óptimo.

Si se planea ejecutar PySpark en modo cluster o acceder a sistemas de archivos distribuidos como Hadoop HDFS o Amazon S3, puede ser necesario realizar configuraciones adicionales. Sin embargo, para desarrollo local y pruebas iniciales, estos pasos no son imprescindibles.

Uso en notebooks de Jupyter:

Si prefiere trabajar en un entorno interactivo como Jupyter Notebook o JupyterLab, asegúrese de que el kernel de PySpark esté disponible. Primero, instale Jupyter si aún no lo ha hecho:

pip install jupyter

Luego, puede iniciar Jupyter Notebook con soporte para PySpark ejecutando:

pyspark --driver-class-path $SPARK_HOME/jars/* --driver-memory 4g --executor-memory 4g \
--packages com.databricks:spark-csv_2.11:1.5.0 \
--conf spark.executor.memoryOverhead=512 \
--jars $SPARK_HOME/jars/* \
--driver-java-options="-Dderby.system.home=$SPARK_HOME/derby" \
--driver-python jupyter \
--driver-python-options "notebook"

Alternativamente, puede crear una sesión de Spark directamente en el notebook:

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("MiAplicacion") \
    .master("local[*]") \
    .getOrCreate()

Instalación con Anaconda:

Si utiliza Anaconda o Miniconda como gestor de entornos, puede instalar PySpark utilizando:

conda install -c conda-forge pyspark

Esto instalará PySpark y MLlib en el entorno activo de conda, asegurando la compatibilidad de paquetes y dependencias.

Instalar Apache Spark

Instalación manual de Apache Spark:

Para configuraciones avanzadas o personalizadas, puede ser necesario instalar Apache Spark manualmente. Siga estos pasos:

  1. Descargue la última versión estable de Apache Spark desde el sitio oficial:
    Apache Spark.
  2. Seleccione la versión precompilada para Apache Hadoop 3.3 o superior.
  3. Extraiga el contenido del archivo descargado en el directorio deseado, por ejemplo, en ~/spark.
  4. Establezca las variables de entorno SPARK_HOME y añada SPARK_HOME/bin al PATH. En Unix/Linux o macOS:
  5. Verifique la instalación ejecutando spark-shell y pyspark desde la terminal.

Instalación con Docker: puedes utilizar Docker para ejecutar PySpark debido a que tiene las dependencias necesarias, incluyendo Apache Spark, haciendo esto fácil de desplegar

  1. Instale Docker, en caso de no tenerlo en su equipo, desde su sitio oficial: Docker
  2. Una vez tenga configurado Docker Desktop, descargue la imagen de Jupyter/PySpark, abre el terminal y ejecute el siguiente comando:   docker pull jupyter/pyspark-notebook
  3. Este comando descargará la última versión de la imagen de Jupyter con PySpark. Dependiendo de tu conexión a Internet, esto puede tardar unos minutos.
  4. Ahora que ha finalizado la descarga de la imagen, debe crear y ejecutar un contenedor para empezar a utilizar Jupyter con el siguiente comando:  docker run -p 8888:8888 jupyter/pyspark-notebook
    • -p 8888:8888: Mapea el puerto 8888 del contenedor al puerto 8888 de tu máquina local. Este es el puerto por defecto en el que Jupyter Notebook se ejecuta.
    • jupyter/pyspark-notebook: Es la imagen que vas a utilizar.
  5. Una vez ejecutado, podrás ver en la terminal los enlaces que te redirigiran al lab de jupiter donde podrás ejecutar tus notebooks de jupiter con PySpark

Dependencias adicionales:

Algunas funcionalidades avanzadas de MLlib pueden requerir paquetes adicionales. Por ejemplo, para visualizaciones avanzadas:

pip install matplotlib seaborn

Para manipulación de datos:

pip install pandas numpy

Consideraciones sobre versiones:

Es fundamental asegurar la compatibilidad entre las versiones de Python, Java y PySpark. Consulte la matriz de compatibilidad en la documentación oficial de Spark para evitar conflictos.

Trabajar con clústeres:

Si utilizará PySpark en un entorno de clúster con gestores de recursos como YARN o Mesos, debe seguir las instrucciones específicas para la instalación en esos sistemas. Esto generalmente implica instalar Spark en todos los nodos y configurar los parámetros de conexión en su aplicación PySpark.

Ejemplo de inicio rápido:

Para comprobar que todo funciona correctamente, puede ejecutar un sencillo programa que calcule la media de una lista de números utilizando MLlib:

from pyspark import SparkContext
from pyspark.mllib.stat import Statistics

sc = SparkContext.getOrCreate()
data = sc.parallelize([1.0, 2.0, 3.0, 4.0, 5.0])
summary = Statistics.colStats(data.map(lambda x: [x]))

print("Media:", summary.mean()[0])

Este script inicializa un SparkContext, crea un RDD y utiliza MLlib para calcular la media de los valores.

Solución de problemas comunes:

  • Error de versión de Java: Si recibe un error relacionado con Java, asegúrese de que la versión instalada es compatible y que la variable de entorno JAVA_HOME está correctamente configurada.
  • Problemas con variables de entorno: Verifique que SPARK_HOME, PYSPARK_PYTHON y PATH están correctamente configurados. Una configuración incorrecta puede causar que PySpark no se inicie adecuadamente.
  • Conflictos de versiones de paquetes: Si enfrenta conflictos entre paquetes de Python, considere crear un entorno virtual con venv o utilizar conda para aislar las dependencias y evitar incompatibilidades.
  • Actualizaciones y mantenimiento: Manténgase al día con las actualizaciones de PySpark y MLlib visitando regularmente la documentación oficial y actualizando los paquetes cuando sea necesario. Las nuevas versiones pueden incluir mejoras de rendimiento y funcionalidades adicionales que podrían ser beneficiosas para sus proyectos.

Siguiendo estos pasos, tendrá su entorno preparado para desarrollar aplicaciones con PySpark, aprovechando al máximo las capacidades de MLlib en el procesamiento y análisis de datos a gran escala.

Configuración de PySpark en Jupyter notebooks desde Visual Studio Code

Para aprovechar al máximo PySpark en un entorno interactivo, es recomendable configurar Jupyter notebooks dentro de Visual Studio Code. Esta configuración combina la potencia de PySpark con la flexibilidad de los notebooks y las herramientas de desarrollo avanzadas que ofrece VS Code.

Instalación de extensiones necesarias:

Primero, asegúrate de tener instaladas las extensiones adecuadas en Visual Studio Code:

  • Python: proporciona soporte para Python, incluyendo resaltado de sintaxis, autocompletado y navegación de código.
  • Jupyter: permite crear y editar notebooks directamente en VS Code.

Estas extensiones son fundamentales para trabajar con notebooks de Jupyter y ejecutar código PySpark sin problemas.

Selección del intérprete de Python:

Es crucial que VS Code utilice el intérprete de Python donde PySpark está instalado. Para seleccionar el intérprete correcto:

  1. Haz clic en la barra de estado en la esquina inferior izquierda donde aparece el nombre del intérprete de Python.
  2. En la lista que aparece, elige el entorno virtual o instalación de Python que contiene PySpark.

Esta selección garantiza que los módulos de PySpark sean reconocidos y puedan importarse correctamente.

Configuración del kernel en Jupyter notebooks:

Al crear o abrir un notebook, debes asegurarte de que el kernel seleccionado corresponde al intérprete de Python con PySpark. Puedes cambiar el kernel haciendo clic en la parte superior derecha del notebook y seleccionando el adecuado.

Establecimiento de variables de entorno:

Para que PySpark funcione correctamente, es posible que necesites configurar algunas variables de entorno. Una forma sencilla de hacerlo es utilizando la biblioteca findspark. Instálala ejecutando:

pip install findspark

Luego, en la primera celda de tu notebook, añade:

import findspark
findspark.init()

Esto configura automáticamente las rutas necesarias para que tu notebook reconozca la instalación de Apache Spark.

Inicialización de SparkSession:

Antes de trabajar con PySpark, debes crear una SparkSession, que es el punto de entrada principal para todas las funcionalidades de Spark. Añade en tu notebook:

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("PySparkEnVSCode") \
    .getOrCreate()

La SparkSession te permite interactuar con los DataFrames y ejecutar consultas SQL sobre los datos.

Ejemplo de uso de PySpark:

Una vez configurada la SparkSession, puedes comenzar a utilizar PySpark. Por ejemplo, para crear y mostrar un DataFrame:

datos = [("María", 28), ("Carlos", 35), ("Elena", 42)]
columnas = ["Nombre", "Edad"]

df = spark.createDataFrame(datos, columnas)
df.show()

Este sencillo ejemplo muestra cómo crear un DataFrame y visualizar su contenido en tu notebook.

Optimización del entorno de trabajo:

Para mejorar tu experiencia al programar con PySpark en VS Code, considera lo siguiente:

  • Habilita el autocompletado y las sugerencias de código en las opciones de la extensión de Python.
  • Configura el formateador de código para mantener un estilo consistente. Puedes utilizar herramientas como Black o Autopep8.
  • Activa el linting para detectar errores y malas prácticas en tu código. La extensión de Python soporta linters como Pylint o Flake8.

Estas configuraciones te ayudarán a escribir código más limpio y eficiente.

Resolución de posibles problemas:

Si enfrentas errores al importar PySpark o al iniciar la SparkSession, verifica lo siguiente:

  • Confirma que tienes instalada una versión compatible del Java Development Kit (JDK), preferiblemente la versión 11 o superior, ya que PySpark requiere Java para funcionar.
  • Asegúrate de que la variable de entorno JAVA_HOME está establecida correctamente y que el directorio bin de Java está en el PATH del sistema.
  • Comprueba que no hay conflictos entre diferentes versiones de PySpark o Apache Spark si tienes múltiples instalaciones.

Solucionar estos aspectos suele resolver la mayoría de los inconvenientes al ejecutar PySpark en notebooks.

Integración con otras bibliotecas:

Trabajando en un notebook, puedes combinar PySpark con otras bibliotecas populares de Python. Por ejemplo, para convertir un DataFrame de PySpark en un DataFrame de pandas:

df_pandas = df.toPandas()

Esto es útil para emplear funciones específicas de pandas o para utilizar librerías de visualización como matplotlib o seaborn:

import matplotlib.pyplot as plt

df_pandas.plot(kind='bar', x='Nombre', y='Edad')
plt.show()

Esta integración te permite aprovechar las fortalezas de diferentes herramientas dentro del mismo entorno.

Cierre adecuado de la sesión:

Al finalizar tu trabajo, es importante detener la SparkSession para liberar recursos:

spark.stop()

Detener la sesión evita posibles problemas con procesos en segundo plano y asegura un uso eficiente de la memoria y el CPU de tu máquina.

Aprende PySpark GRATIS online

Todas las lecciones de PySpark

Accede a todas las lecciones de PySpark y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Accede GRATIS a PySpark y certifícate

En esta lección

Objetivos de aprendizaje de esta lección

  1. Instalar PySpark utilizando pip para desarrollo en local.
  2. Configurar variables de entorno para entornos avanzados.
  3. Verificar la correcta instalación de PySpark.
  4. Utilizar entornos virtuales para aislar dependencias.
  5. Comprender los requisitos adicionales para PySpark.
  6. Configurar y usar PySpark en Jupyter notebooks.
  7. Instalar PySpark con Anaconda o mediante Docker.
  8. Solucionar problemas comunes de instalación y configuración.
  9. Integrar PySpark con librerías como pandas y matplotlib.