2015-06-10 3 views
0

Я создал программу scala, которая ищет слово в текстовом файле. Я создаю файл scala с затмением и после того, как я скомпилирую и создаю банку с сборкой sbt и sbt. После этого я запускаю .jar с Spark в local и запускаю правильно. Теперь я хочу попробовать запустить эту программу, используя Spark на hadoop, у меня есть 1 мастер и 2 рабочих машины. Мне нужно изменить код? и какую команду я делаю с оболочкой мастера? я есть создать ведро и я поставил текстовый файл в HadoopЗапуск программы Scala с Spark на Hadoop

это мой код:

import scala.io.Source 
import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkConf 

object wordcount { 
    def main(args: Array[String]) { 
     // set spark context 
     val conf = new SparkConf().setAppName("wordcount").setMaster("local[*]") 
     val sc = new SparkContext(conf) 

     val distFile = sc.textFile("bible.txt") 

     print("Enter word to look for in the HOLY BILE: ") 
     val word = Console.readLine 
     var count = 0; 
     var finalCount=0; 
     println("You entered " + word) 
     val input = sc.textFile("bible.txt") 
     val splitedLines = input.flatMap(line => line.split(" ")) 
        .filter(x => x.equals(word)) 

System.out.println("The word " + word + " appear " + splitedLines.count()) 
    } 
} 

Спасибо всем

+0

Измените свою программу, используйте мастер как указание на исходный интерфейс вспышки, например 'spark: // xyz-server: 7077', или лучше не устанавливать мастер в вашей программе, тогда вам не нужно менять свой код , просто скажите мастеру при запуске кода в оболочке по параметру как «--master local» –

+0

команда, которую я пытаюсь использовать на оболочке в главном, - исправить-submit --master local --jars wordcount.jar? Я помещаю файл jar в папку искры в мастер, это правильно? – user3836982

+0

Позвольте мне рассказать вам, как я это делаю. 1 - Я не упоминаю об искрах в моем коде. 2. Я использую следующую команду для запуска моих искровых приложений в режиме кластера. 'spark-submit --class full.path.to.MainClass --master spark: // cloud-server: 7077 path_to_my_JAR.jar' –

ответ

1

Просто измените следующую строку,

val conf = new SparkConf().setAppName("wordcount").setMaster("local[*]") 

до

val conf = new SparkConf().setAppName("wordcount") 

Это позволит вам не изменять код, когда вы хотите переключиться с локального режима на режим кластера. Опция мастера может быть передана с помощью команды искровой представить следующий образом,

spark-submit --class wordcount --master <master-url> --jars wordcount.jar 

и если вы хотите, чтобы запустить программу локально, используйте следующую команду,

spark-submit --class wordcount --master local[*] --jars wordcount.jar 

here список мастеров который вы можете установить при запуске приложения.

+0

Я попробовал ваше решение в локальном режиме и возвратил ошибку: должен указать основной ресурс (JAR или phyton file). Где я указываю этот тип? – user3836982

+0

spark-submit --class wordcount --master local [*] --jars wordcount.jar Sathish

+0

У меня есть только 1 барабан с sbt, который я вызываю wordcount.jar, что вы имеете в виду с основным файлом JAR? – user3836982

Смежные вопросы