Desmitificando el Optimizador Catalyst de Apache Spark
Desmitificando el Optimizador Catalyst de Apache Spark El procesamiento de grandes volúmenes de datos es una tarea crítica en el campo de la ingeniería de…
Apache Spark es uno de los frameworks de procesamiento de datos más utilizados en el mundo del Big Data. Sin embargo, configurar un entorno local de Spark puede ser complicado, especialmente para quienes están dando sus primeros pasos. La buena noticia es que Google Colaboratory nos permite ejecutar Spark directamente desde el navegador, sin necesidad de instalar nada en nuestro equipo.
En este tutorial aprenderás paso a paso cómo instalar y configurar Apache Spark en Google Colab para que puedas empezar a practicar con PySpark de forma gratuita.
Antes de comenzar, solo necesitas lo siguiente:
No necesitas instalar ningún software adicional en tu computadora. Todo el proceso se realiza dentro del entorno de Colab.
Colaboratory, o «Colab» para abreviar, es un producto de Google Research.
Permite a cualquier usuario escribir y ejecutar código arbitrario de Python en el navegador.
Es especialmente adecuado para tareas de aprendizaje automático, análisis de datos y educación. Desde un punto de vista más técnico, Colab es un servicio alojado de Jupyter Notebook que no requiere configuración y que ofrece acceso gratuito a recursos informáticos, como GPUs. Colab es un producto sin costo.
Los recursos de Colab no están garantizados ni son ilimitados y, en ocasiones, los límites de uso fluctúan. Esto es necesario para que Colab pueda brindar recursos sin costo.
El código se ejecuta en una máquina virtual exclusiva para tu cuenta. Las máquinas virtuales se borran cuando están inactivas durante un tiempo prolongado y tienen una vida útil máxima determinada por el sistema de Colab. Esto significa que cualquier dato que se suba a la máquina virtual desaparecerá una vez que la máquina virtual sea borrada y solo se guardarán las celdas de código y/o markdown que se tengan en el notebook.
Esto es importante para Spark: cada vez que inicies una nueva sesión en Colab, tendrás que volver a ejecutar las celdas de instalación. Por eso es recomendable tener todas las celdas de configuración al inicio del notebook, para poder ejecutarlas rápidamente.
El proceso de instalación consta de cuatro pasos: instalar Java, descargar Spark, configurar las variables de entorno e instalar la librería findspark.
Para poder instalar Spark en Colab vamos a necesitar descargar e instalar el SDK de Java y además descargar Apache Spark dentro de la máquina virtual.
Spark está escrito en Scala, que se ejecuta sobre la JVM (Java Virtual Machine), por lo que Java es un requisito indispensable. En este caso utilizaremos OpenJDK 11, que es la versión estándar compatible con Spark 3.x.
Ejecuta la siguiente celda en tu notebook de Colab:
!apt-get install openjdk-11-jdk-headless -qq > /dev/null
!wget -q https://archive.apache.org/dist/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
!tar xf spark-3.5.0-bin-hadoop3.tgz
Esto es lo que hace cada línea:
apt-get install openjdk-11-jdk-headless — Instala el JDK de Java 11 en modo headless (sin interfaz gráfica, ideal para servidores).wget — Descarga el archivo comprimido de Apache Spark 3.5.0 con soporte para Hadoop 3 desde el archivo oficial de Apache.tar xf — Descomprime el archivo .tgz descargado, creando la carpeta spark-3.5.0-bin-hadoop3 en el directorio /content/.Nota: Los flags
-qsuprimen la salida verbose de los comandos para mantener la celda limpia. Si algo falla y necesitas depurar, puedes eliminar esos flags para ver la salida completa.
El siguiente paso que vamos a necesitar realizar es establecer las variables de entorno de JAVA_HOME y SPARK_HOME. Estas variables le indican al sistema dónde se encuentran las instalaciones de Java y Spark, respectivamente.
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-11-openjdk-amd64"
os.environ["SPARK_HOME"] = "/content/spark-3.5.0-bin-hadoop3"
JAVA_HOME apunta al directorio donde se instaló OpenJDK 11. Esta ruta es estándar en las máquinas virtuales de Colab.SPARK_HOME apunta al directorio donde se descomprimió Spark en el paso anterior.Sin estas variables configuradas, PySpark no podrá localizar los binarios de Java ni de Spark, y obtendrás errores al intentar crear una sesión.
El siguiente paso será instalar la librería findspark.
!pip install -q findspark
¿Qué es findspark? Es una pequeña librería de Python que localiza la instalación de Spark en el sistema y la agrega al PATH de Python. Sin findspark, Python no sabría dónde encontrar los módulos de PySpark, ya que Spark no se instala como un paquete estándar de pip.
Una vez instalada, solo necesitas llamar a findspark.init() al inicio de tu código para que PySpark quede disponible como cualquier otra librería de Python.
Si todo ha ido bien hasta este paso, ya deberíamos tener Spark listo para empezar a trabajar con él en Colab. Por tanto, lo siguiente que vamos a realizar es crear una sesión de Spark y crear un DataFrame sencillo que nos ayudará a comprobar si la descarga y configuración de Spark fue exitosa.
import findspark
findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.master("local[*]") \
.appName("Colab Spark") \
.getOrCreate()
# Crear un DataFrame sencillo de prueba
data = [("José", 30), ("María", 25), ("Carlos", 35)]
columns = ["Nombre", "Edad"]
df = spark.createDataFrame(data, columns)
df.show()
Si la configuración fue exitosa, deberías ver la siguiente salida:
+------+----+
|Nombre|Edad|
+------+----+
| José| 30|
| María| 25|
|Carlos| 35|
+------+----+
Vamos a entender cada parte del código:
findspark.init() — Localiza Spark y lo agrega al PATH.SparkSession.builder — Inicia la construcción de una sesión de Spark..master("local[*]") — Configura Spark en modo local usando todos los cores disponibles de la máquina virtual..appName("Colab Spark") — Asigna un nombre a la aplicación (visible en la Spark UI)..getOrCreate() — Crea una nueva sesión o reutiliza una existente si ya hay una activa.spark.createDataFrame() — Crea un DataFrame a partir de una lista de tuplas y una lista de nombres de columnas.JAVA_HOME is not setSi al crear la sesión de Spark obtienes un error que menciona JAVA_HOME, verifica que:
JAVA_HOME coincide con la instalación real. Puedes verificarla con:!ls /usr/lib/jvm/
Py4JJavaError o SparkContext already existsEste error ocurre cuando intentas crear una segunda sesión de Spark sin cerrar la anterior. Para solucionarlo, ejecuta:
spark.stop()
Y luego vuelve a crear la sesión con SparkSession.builder...getOrCreate().
Recuerda que Colab tiene un límite de inactividad. Si tu sesión se desconecta, simplemente vuelve a ejecutar todas las celdas desde el inicio (Runtime > Run all o Ctrl+F9).
spark.stop() al finalizar tu trabajo para liberar recursos de la máquina virtual.print(spark.version)
Instalar Apache Spark en Google Colaboratory es un proceso sencillo que nos permite tener un entorno de Big Data funcional en cuestión de minutos, sin necesidad de configurar nada en nuestro equipo local. Esto lo convierte en una herramienta ideal para aprender Spark, realizar pruebas rápidas o prototipar pipelines de datos.