DEV Community

loading...
Cover image for Aprendiendo Spark: #1 Introducción

Aprendiendo Spark: #1 Introducción

danisancas profile image Dani Sancas Updated on ・3 min read

¡Saludos, camaradas! 👋

En esta serie de artículos entraremos en el mundillo de Apache Spark, el framework por excelencia de computación distribuida desde hace ya unos años.

¿Qué es Apache Spark? 💥

Es un framework de computación distribuida escrito en Scala, que posee APIs en otros lenguajes como Python, Java y R.

En esta serie de tutoriales escribiremos código en Python por ser un lenguaje más popular que Scala, y por ser el lenguaje con el que trabajo habitualmente desde hace ya un tiempo.

Scala siempre estarás en mi ❤️, ¡no te olvido!

¿Qué es esto de la computación distribuida? ¿Es muy complicado? 🤔

Internamente la computación distribuida tiene su complejidad, no nos vamos a engañar.

La buena noticia es que Spark nos abstrae de un montón de problemáticas (computación en paralelo, sincronización de nodos, orquestación de operaciones, tolerancia a fallos y un largo etc) y nos permite centrarnos en lo importante: escribir el código con la funcionalidad que queremos desarrollar.

Por lo tanto, siempre será interesante conocer los entresijos de la maquinaria que estamos dirigiendo, pero de momento no nos hará falta.

Vale, ¿entonces qué necesitamos para empezar?

Lo ideal sería contar un algo de experiencia en programación (si es con Python sería magnífico) y algo de experiencia utilizando un IDE (PyCharm, VSCode) o un editor de textos acompañado de una terminal si es ese tu arsenal habitual ⚔️

Necesitaremos Python, así como un JDK, ya que el código Python que escribamos se traducirá a bytecode y se ejecutará en la JVM.

En caso de que estéis desde Windows, existen algunos problemas conocidos, y seguramente sea necesario instalar (WinUtils). Os dejo un enlace con 5 pasos para poner a punto la instalación en Windows.

Con esta breve introducción vamos dando por finalizado el primer artículo de esta serie...

¡Un momento! ¿No nos vas a dar algo para probar? Porfi... 🥺

Bueeeeeeno, vale 😇 Para que podáis comprobar si habéis instalado correctamente todo lo necesario o necesitáis ajustar algo, os pongo un ejemplo para que creéis un nuevo proyecto en vuestro IDE de cabecera.

Primero habrá que instalar el paquete pyspark (a día de hoy la última versión es la 3.0.1). Lo podemos instalar a través de pip y yo siempre recomiendo usar el fichero requirements.txt para garantizar que no nos olvidamos de ninguna dependencia. Por lo tanto, nuestro fichero requirements.txt quedaría de la siguiente manera:

pyspark==3.0.1
Enter fullscreen mode Exit fullscreen mode

Y lo instalaríamos ejecutando pip install -r requirements.txt.

Una vez instalado pyspark, crearemos un fichero hola_mundo.py en el que pegaremos el siguiente código.

from pyspark.sql import SparkSession

# Iniciamos Spark de manera local
spark = (SparkSession
         .builder
         .master("local[*]")
         .appName("Hola Mundo")
         .getOrCreate())

# Paralelizamos una lista del 0 al 9 (incluido)
# Computamos la suma de los números
# Obtenemos el resultado en una variable
result = (spark
          .sparkContext
          .parallelize(range(10))
          .reduce(lambda x, y: x + y))

# Imprimimos el resultado
print(f"La suma es {result}")
Enter fullscreen mode Exit fullscreen mode

Finalmente lo ejecutaremos, ya sea a través del IDE, o mediante una terminal invocando el intérprete de Python y pasándole nuestro fichero hola_mundo.py como argumento.

Aparecerán unos cuantos warnings (ni caso) y finalmente veréis el siguiente output:

La suma es 45

Process finished with exit code 0
Enter fullscreen mode Exit fullscreen mode

Si no habéis tenido tanta suerte, ya tenéis deberes para vuestro tiempo libre 😬

Espero que os haya gustado esta primera entrega. Se aceptan todo tipo de críticas constructivas 🧐

¡Nos vemos, equipo! 🙌

Edit1: Añadida dependencia de PySpark
Edit2: Reformateo de código para cumplir las reglas de estilo PEP8

Discussion (0)

pic
Editor guide