Ejecución distribuida Spark para Python

Ejemplo “Hola mundo”

Definir el script en Python a ejecutar

Código del fichero hola_mundo.py

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("Hola_Mundo").getOrCreate()
print("Hola mundo")
spark.stop()

Nota: Al ser un lenguaje interpretado no es necesario compilarlo para su ejecución.

 

Ejecución distribuida del script

Para ejecutar de forma distribuida el script en python detro de un entorno distribuido como puede ser Hortonworks, se debe ejecutar desde el shell la siguiente instrucción:

spark-submit --master local[2] \
 --executor-memory 1g \
 --name hola_mundo\
 --conf "spark.app.id=hola_mundo" \
 /home/hola_mundo.py

Nota: “\” se ponen para indicar al interprete del shell que la instrucción continua en la siguiente linea.

 

Ejemplo de uso de “SparkContext”

Definir el script en Python a ejecutar

Código del fichero spark_context.py

from pyspark import SparkConf, SparkContext

conf = (SparkConf()
         .setMaster("local")
         .setAppName("My app")
         .set("spark.executor.memory", "1g"))

sc = SparkContext(conf = conf)

rdd = sc.parallelize([1, 1, 1, 1, 2, 2, 2, 3, 3, 4])
print(rdd.collect()) 

rdd2 = rdd.map(lambda x: x*2)
tSum = rdd2.reduce(lambda x,y: x+y)
print("La suma del producto total es: " + str(tSum))

Nota: Al ser un lenguaje interpretado no es necesario compilarlo para su ejecución.

Ejecución distribuida del script

Para ejecutar de forma distribuida el script en python dentro de un entorno distribuido como puede ser Hortonworks, se debe ejecutar desde el shell la siguiente instrucción:

spark-submit --master local[2] \
 /home/spark_context.py

Nota: “\” se ponen para indicar al interprete del shell que la instrucción continua en la siguiente linea.

Fuente: Documentación oficial sobre comandos de spark-submit

 

Fuente: Web oficial de Apache Spark

Otros artículos que pueden ser de interés:

Autor: Diego Calvo