Ejecución y Configuración de Spark en Línea de Comando y Anaconda
Resumen
¿Cómo configurar variables de entorno en Linux para Spark y Java?
La correcta configuración de variables de entorno es esencial para asegurar que Spark y Java funcionen adecuadamente en un entorno Linux. Comienza editando el archivo de configuración base RC, que contiene los ajustes necesarios para tu sesión de usuario. Es importante agregar las rutas específicas de manera adecuada:
Ruta de Java: Agrega un comentario para identificar las líneas que contienen las configuraciones de Java.
# Pad de JavaexportJAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
exportPATH=$PATH:$JAVA_HOME/bin
JAVA_HOME: Indica la carpeta donde está instalado Java.
Configuraciones para Spark: Configura la variable SPARK_HOME de manera similar, apuntando a la carpeta donde descomprimiste Spark.
# Pad de SparkexportSPARK_HOME=/home/spark/spark
exportPATH=$PATH:$SPARK_HOME/bin
Variables para Python y PySpark: Es esencial para el uso de Spark con Python.
No olvides guardar los cambios y recargar el archivo de configuración con el comando source. Esto asegura que las nuevas configuraciones estén activas sin necesidad de reiniciar el sistema.
¿Cómo ejecutar un proceso de Spark usando línea de comandos?
Ejecutar procesos de Spark por línea de comandos, aunque efectivo, puede resultar un tanto complicado debido a la cantidad de información que genera. Aquí se detalla cómo hacerlo de forma básica:
Preparación del entorno: Asegúrate de tener todo configurado correctamente y navega a la carpeta donde resides Spark.
Uso de PySpark: Para ejecutar código en vivo similar a entrar al intérprete de Python, utiliza PySpark.
Uso de spark-submit para scripts .py: Si deseas ejecutar un archivo Python con Spark, el comando spark-submit es esencial.
Ubica tu script y archivo de datos, por ejemplo code_example.py y data.csv.
Ejecuta el comando:
bin/spark-submit code_example.py data.csv
Durante la ejecución, recibirás mensajes en el terminal que indican el progreso y éxito de las operaciones realizadas por Spark. Sin embargo, estos logs pueden ocultar los resultados que buscas, por lo tanto, es importante revisar la salida con detenimiento.
¿Qué desafíos presenta el uso de la línea de comandos y cómo se pueden mitigar?
La línea de comandos es poderosa, pero puede llevar a un mar de logs y mensajes, lo que hace difícil distinguir los resultados relevantes. Este método es ideal cuando:
El código está completamente probado.
Se requiere ejecutarlo en ambientes de producción.
Deseas realizar demostraciones con un subconjunto de datos.
Pese a ser funcional, para fines educativos y en situaciones en las que necesitas comprender el estado de los procesos, es recomendable buscar alternativas. Una opción es integrar Anaconda, que facilita el acceso a los resultados y la interacción con el entorno Spark de manera más amigable y didáctica.
Para aquellos interesados en ejecutar y aprender sobre Spark más cómodamente, se recomienda la próxima sesión que explorará cómo configurar Anaconda y hacer el proceso más accesible. Y recuerda, siempre hay una comunidad dispuesta a ayudar: deja tus dudas o comentarios para recibir soporte. ¡Sigue aprendiendo y explorando el mundo de Spark!
WARNNativeCodeLoader:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Traceback(most recent call last):File"/home/rb/Platzi/Escuela de Data Science/22.- Curso Introductorio de Spark/codeExample.py", line 3,in<module>
Es porque pySpark de momento solo es soportado hasta la versión 3.7.9 de python, en mi caso python3.8.2 es la versión por defecto con debian/ubuntu. En mis apuntes al terminar el curso dejo detallado como solucionar el error y algunos warnings
te recomiendo instalar jupyter via pip puntualmente para la version 3.7 de python
python3.7 -m pip install jupyter
la segunda recomendación es utilizar un venv, aunque siempre es útil tener jupyter a mano, si lo tienes para python 3.8 es necesario borrar todo rastro de la instalación.
Ahora podemos llamar a jupyter de forma normal o solo escribiendo pyspark.
confirmo! el tip es exportar la variable:
exportPYSPARK_PYTHON=python3.7
Despues de 4 horas batallando entre maquinas virtuales, instalación en windows y pruebas en google colab les dejo como logre hacer el ejemplo desde Google Colab, lo unico es que se deben agregar los archivos codeExamplepy y data.csv a colab cada vez que se inicie el trabajo, ya que cuando se cierra la conexión los archivos se borran.
Muchas gracias por el aporte, con eso pude hacerlo de forma directa desde Google Colab sin tanto dolor de cabeza jejej. También puedes subir los archivos a Google Drive y hacer la conexión del colab con drive, para que no tengas que subir los archivos siempre. Con
from google.colabimport drive
drive.mount('/drive/MyDrive')
Gracias por el aporte!!
Para los que usan windows, pueden ejecutar spark-submit mediante cmd desde cualquier directorio, en este caso, para el ejemplo del video deben posicionarse en el directorio donde guardaron el ejemplo y desde ahí ejecutar spark-submit
A veces me intriga mucho el como hay developers que prefieron CLI vs una buenas GUI; al final del dia en tu trabajo (hablo por experiencia), no evaluan el quien hace los comandos más complejos, sino quien aporta más valor a la empreza de una manera más rapida. Aun asi, guardo esta clase para el futuro :D
Se puede usar 'spark-shell' para abrir la shell en Scala o 'pyspark' para abrir la shell en un entorno de Python. Puede ser igual de cómodo para lanzar líneas de códigos individuales y hacer pruebas cortas. Si se hace de esta forma Spark crea automáticamente el contexto.
Yo instale el ambiente en Google Colab y estas son las lineas del código, solo ten en cuenta tener la ultima versión del Spark la fecha que realize esto es el 27/06/2024
import findsparkfindspark.init()
from pyspark.sql import SparkSessionspark = SparkSession.builder.appName('Mi_Primera_Base').getOrCreate()
----------------------------------------
Esta es el código para probar lo anterior:
# Create a list of datadata = [("Alice", 25), ("Bob", 30), ("Charlie", 28)]
# Create a DataFrame from the datadf = spark.createDataFrame(data, ["name", "age"])
# Print the DataFramedf.show()
Hola, estuve checando el codigo, y observe que la operacion count() esta contando cuantas veces aparece, en este caso, el estado y el color. Para saber la suma del count, entonces se le tiene que agregar la operacion sum()
importsysfrom pyspark.sqlimportSparkSessionfrom pyspark.sql.functionsimport count, sum as sum_
if __name__ =="__main__": #iflen(sys.argv)!=2: # print("Usage: mnmcount <file>", file=sys.stderr) # sys.exit(-1) spark =(SparkSession.builder.appName("PythonMnMCount").getOrCreate()) # get the M&M data set file name
mnm_file = sys.argv[1] # read the file into a SparkDataFrame mnm_df =(spark.read.format("csv").option("header","true").option("inferSchema","true").load("D:/Spark Most Current/data.csv")) mnm_df.show(n=5, truncate=False) # find the aggregate count forCalifornia by filtering
ca_count_mnm_df =( mnm_df.select("*").where(mnm_df.State=='CA').groupBy("State","Color").agg(count("Count").alias("Total"),sum_("Count").alias("Total_Sum")).orderBy("Total", ascending=False)) # show the resulting aggregation forCalifornia ca_count_mnm_df.show(n=10, truncate=False)
Hola, cuando abro el archivo .bashrc me sale vacio, que debo hacer? guardar las variables igual? o hay algo malo?
Como puedo ejecutar esto si uso Windows?
2 años y nadie te ha respondido cómo instalar en Windows? Ni siquiera el profesor ??
:/ qué paso ahí platzi. Yo también en Windows 11 es todo un problema. No logro avanzar a lo practico por esto
De todos los tutoriales que encontre respecto a la instalacion de Spark en Windows, este fue el que mas me sirvio:
Sin embargo lo adapte a la forma en que uso python, que es a traves de entornos aislados (environments) de python creados con Miniconda (una version de Anaconda ligera).
La forma en que lo use fue solamente realizando la instalacion desde PIP, solo con el entorno creado especificamente para el proyecto del curso. activado
podrian ayudarme con esto?, hice la instalación en windows siguiente este tutorial pero a la hora de ejecutar solo me sale esto, y no se se si es algun log o algun tipo de incopatibilidad
Si estan teniendo problemas con la instalación y configuración, acá les dejo una guía que hice "infalible" para Ubuntu. Están citadas todas las fuentes por si quieren ir mas al detalle. Para usuarios de windows recomiendo instalar wsl2 es mucho más práctico . https://drive.google.com/file/d/1Lk9YIfNtAd9CLvLZbRC9c5YlF1i1TQP6/view?usp=sharing
podria ser el curso en windows... se hace super enrredado querer tratar de hacer lo que explica acá
Hola Oscar, soy usuario de windows y veo que muchos estudiantes de platzi usan windows, me parece que seria adecuado hacer videos para quienes tenemos windows o por lo menos subir un archivo pdf con los pasos necesarios. Gracias
Para todos aquellos con problemas por la versión de python.
En mi caso ya tenía instalado anaconda y una versión de python, lo que hice en la terminal de ubuntu fue crear un ambiente para Spark lo cual seguramente es incluso mejor que instalar paquetes en todo el ambiente y cambiar la versión de python que ya tenemos:
Hola, tengo una duda, donde se usa:
from pyspark.sql.types import row
Es que no recuerdo donde se usa,
Tengo duda, que diferencia si instalo el core de Scala al de Spark, si al ejecutar el spark-shell me ejecuta el entorno de CLI de scala
Hola Charly!
Si instalas Scala, solamante deberás realizar tus aplicaciones en Scala. En estricto sentido es lo ideal ya que es el lenguaje donde esta construido Spark.
Si jamás has usado Scala, es sumamente parecido a Python; por lo que incluso en foros puedes encontrar 'comparativas' de códigos para que migres de forma mas cómoda.
Siento un poco mal hecho el curso, a este punto xd
Este curso debe actualizarse, porque con docker se instalar y configurar spark para jupyter y vs code en 1 linea de código.
pueden usar el siguiente linea en la terminar de docker:
docker run -p 8888:8888 jupyter/pyspark-notebook
Para usarlo en VS code, lo que tienes que hacer el usar el servidor de jupyter. El link lo encontraras en los logs de docker.
En el siguiente link hay un tutorial mas extenso para instalar spark usando docker: