2015-09-08 4 views
1

Я использую Apache Spark на моем компьютере с Windows. Я относительно новичок в этом, и я работаю локально, прежде чем загружать свой код в кластер.Apache Spark: Импортные банки

Я написал очень простую программу SCALA и все работает отлично:

println("creating Dataframe from json") 
val sqlContext = new org.apache.spark.sql.SQLContext(sc) 
val rawData = sqlContext.read.json("test_data.txt") 
println("this is the test data table") 
rawData.show() 
println("finished running") 

Программа корректно выполняет. Теперь я хочу добавить некоторую обработку, которая вызывает некоторые простые функции Java, которые я предварительно упаковал в JAR-файл. Я запускаю оболочку scala. Как говорится на странице Начало работы, я запуска оболочки с:

c:\Users\eshalev\Desktop\spark-1.4.1-bin-hadoop2.6\bin\spark-shell --master local[4] --jars myjar-1.0-SNAPSHOT.jar 

важный факт: я не установлен Hadoop на моей локальной машине. Но поскольку я только разбираю текстовый файл, это не имеет значения, и это не имело значения, пока я не использовал -jars.

Теперь я перехожу к той же программе scala. Там нет ссылки на файл фляга еще ... На этот раз я получаю:

...some SPARK debug code here and then... 
    15/09/08 14:27:37 INFO Executor: Fetching http://10.61.97.179:62752/jars/myjar-1.0-SNAPSHOT.jar with timestamp 144 
    1715239626 
    15/09/08 14:27:37 INFO Utils: Fetching http://10.61.97.179:62752/jars/myjar-1.0-SNAPSHOT.jar-1.0 to C:\Users\eshalev\A 
    ppData\Local\Temp\spark-dd9eb37f-4033-4c37-bdbf-5df309b5eace\userFiles-ebe63c02-8161-4162-9dc0-74e3df6f7356\fetchFileTem 
    p2982091960655942774.tmp 
    15/09/08 14:27:37 INFO Executor: Fetching http://10.61.97.179:62752/jars/myjar-1.0-SNAPSHOT.jar with timestamp 144 
    1715239626 
    15/09/08 14:27:37 ERROR Executor: Exception in task 1.0 in stage 0.0 (TID 1) 
    java.lang.NullPointerException 
      at java.lang.ProcessBuilder.start(Unknown Source) 
      at org.apache.hadoop.util.Shell.runCommand(Shell.java:482) 
      at org.apache.hadoop.util.Shell.run(Shell.java:455) 
      at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:715) 
      at org.apache.hadoop.fs.FileUtil.chmod(FileUtil.java:873) 
      at org.apache.hadoop.fs.FileUtil.chmod(FileUtil.java:853) 
      at org.apache.spark.util.Utils$.fetchFile(Utils.scala:465) 
... aplenty more spark debug messages here, and then ... 
this is the test data table 
<console>:20: error: not found: value rawData 
       rawData.show() 
      ^
finished running 

Я перепроверил http://10.61.97.179:62752/jars/myjar-1.0-SNAPSHOT.jar-1.0-SNAPSHOT.jar, и я могу скачать это просто отлично. И опять же ничего в коде не упоминается. Если запустить оболочку без -jar, все работает нормально.

+0

Является ли код выше в объекте scala? Если это так, вы бы хотели использовать spark-submit вместо spark-shell –

+0

Нет, как видно из фрагмента, это не объект. И поскольку упомянутая искра успешно запускает scala без ошибок, пока я не использую флаг -jar при запуске искры. (Я не пытаюсь вызвать код java * еще *) – eshalev

+0

Мне было интересно, потому что вы написали «Я написал очень простую программу scala, и все работает нормально:« Что в этой банке? Можете ли вы предоставить более конкретную информацию? –

ответ

0

Я пробовал это на другом кластере, который является искровым 1.3.1 и имеет установленный хаос. Он работал безупречно.

Количество раз, когда hadoop упоминалось в трассе стека на моей установке одного узла, приводит меня к мысли, что для использования флага -jars требуется фактическая установка hadoop.

Другой вариант - проблема с установкой искры 1.4, которая до этого безупречно работала.