2016-02-17 4 views
0

Я имею ошибку при попытке запустить простой код Scala в Спарк, похожий на эти посты: this и thisNoSuchMethodError для Scala Seq линии в Спарк

Их проблема заключалась в том, что они использовали неправильную версию Scala компилировать их Искры проекта. Тем не менее, моя - правильная версия.

У меня есть Spark 1.6.0, установленный на кластере AWS EMR для запуска программы. Проект скомпилирован на моей локальной машине с установленным Scala 2.11 и 2.11 указан во всех зависимостях и строит файлы без ссылок на 2.10.

Это точная линия, которая бросает ошибку:

var fieldsSeq: Seq[StructField] = Seq() 

И это точная ошибка:

Exception in thread "main" java.lang.NoSuchMethodError: scala.runtime.ObjectRef.create(Ljava/lang/Object;)Lscala/runtime/ObjectRef; 
at com.myproject.MyJob$.main(MyJob.scala:39) 
at com.myproject.MyJob.main(MyJob.scala) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731) 
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181) 
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206) 
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) 
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 
+0

Не могли бы вы показать пример? –

+3

Spark 1.6 основан на Scala 2.10 не 2.11. Вы скомпилировали Spark специально для 2.11? Принятый ответ для вашей второй ссылки - это проблема - бинарный скомпилированный для 2.11, запущенный на Spark (который равен 2.10). –

+0

Я просто посмотрел, что на сайте Spark, и вы правы - Spark 1.6 по-прежнему базируется на 2.10. Сотрудник сказал мне, что 1,6 увеличил версию Scala до 2,11, так что я использовал последние пару недель. Мои другие работы Spark отлично работали. – mcmcmc

ответ

0

Спарка 1,6 на ОМ еще построен Scala 2.10, так что да, имеют ту же проблему, что и в сообщениях, которые вы связали. Чтобы использовать Spark для EMR, вы в настоящее время должны скомпилировать свое приложение с помощью Scala 2.10.

Spark обновил свою версию Scala до версии 2.11 с версии Spark 2.0 (выйдет в течение следующих нескольких месяцев), поэтому, когда EMR поддерживает Spark 2.0, мы, скорее всего, будем следовать этому новому стандарту и скомпилировать Spark со Scala 2.11.

+0

Да, я заметил, что после того, как @Bubbafat указал на это. Сотрудник сказал мне, что 1,6 увеличили версию Scala до 2,11, но, я думаю, они неправильно истолковали их источник и имели в виду 2.0. – mcmcmc

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