Translate

miércoles, 24 de octubre de 2018

Correr una tarea en un cluster de spark.


Hemos hecho un proyecto con Spark  el cual cuenta palabras pero este utiliza spark como "local" es decir no utiliza un cluster spark.

Pero la potencia de Spark esta en utilizar esto en un Cluster para lo que tenemos que modificar nuestro Context para que permita ejecutar esto en el cluster.

Un cluster Spark tiene un master el cual tiene una ip por ejemplo x.x.x.x con dicha ip vamos a modificar el Context de Spark:

package com.myCompania.app

import org.apache.spark.{SparkConf, SparkContext}

object SparkContext {

  //Create a SparkContext to initialize Spark
  val conf = new SparkConf()
 
  conf.setMaster("spark://x.x.x.x:7077")
  conf.setJars(Seq("path/nombreDelJar.jar"))

  conf.setAppName("Hexacta")
  val sc = new SparkContext(conf)

   def getSc = {
      sc
   }
}

En el puerto 7077 spark publica su servicio, por dicha razon escribimos esta linea:

conf.setMaster("spark://x.x.x.x:7077")

Luego tenemos que agregar el jar de nuestra aplicación porque spark no conoce las clases que utilizamos, y esto lo hacemos con :

conf.setJars(Seq("path/nombreDelJar.jar"))

Y listo!!