2015-01-13 9 views
13

Używam Scala 2.11, Spark i Scallop (https://github.com/scallop/scallop). Kiedyś SBT zbudować słoik tłuszczu aplikacji bez Spark warunkiem zależnościami (jest pod adresem: analysis/target/scala-2.11/dtex-analysis_2.11-0.1.jar)Dlaczego Scala 2.11 i Spark with scallop prowadzą do "java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror"?

jestem w stanie uruchomić grzywny programu w SBT

Próbowałem uruchomić go z linii poleceń w następujący sposób.:

time ADD_JARS=analysis/target/scala-2.11/dtex-analysis_2.11-0.1.jar java -cp /Applications/spark-1.2.0-bin-hadoop2.4/lib/spark-assembly-1.2.0-hadoop2.4.0.jar:analysis/target/scala-2.11/dtex-analysis_2.11-0.1.jar com.dtex.analysis.transform.GenUserSummaryView -d /Users/arun/DataSets/LME -p output -s txt -o /Users/arun/tmp/LME/LME 

pojawia się następujący komunikat o błędzie:

Exception in thread "main" java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaUniverse$JavaMirror; at org.rogach.scallop.package$.(package.scala:37) at org.rogach.scallop.package$.(package.scala) at com.dtex.analysis.transform.GenUserSummaryView$Conf.delayedEndpoint$com$dtex$analysis$transform$GenUserSummaryView$Conf$1(GenUserSummaryView.scala:27) at com.dtex.analysis.transform.GenUserSummaryView$Conf$delayedInit$body.apply(GenUserSummaryView.scala:26) at scala.Function0$class.apply$mcV$sp(Function0.scala:40) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) at org.rogach.scallop.AfterInit$class.delayedInit(AfterInit.scala:12) at org.rogach.scallop.ScallopConf.delayedInit(ScallopConf.scala:26) at com.dtex.analysis.transform.GenUserSummaryView$Conf.(GenUserSummaryView.scala:26) at com.dtex.analysis.transform.GenUserSummaryView$.main(GenUserSummaryView.scala:54) at com.dtex.analysis.transform.GenUserSummaryView.main(GenUserSummaryView.scala)

+0

Wygląda na to, że w Twojej klasie brakuje obrazu scala-reflect.jar –

Odpowiedz

15

problem jest, że użyłeś niekompatybilne wersje Scala, czyli był Spark skompilowany ze Scala 2.10 i próbowałeś użyć Scala 2.11.

Przenieś wszystko do wersji Scala 2.10 i upewnij się, że zaktualizowałeś również swój SBT.

Możesz również spróbować skompilować źródła Spark dla Scala 2.11.7 i użyć ich zamiast tego.

0

Ja też spotkałem się z tego samego problemu z zapłonem przedstawienia, w moim przypadku:

Spark Zadanie zostało skompilowane z: Scala 2.10.8

wersja Scala, z którymi Spark został skompilowany w zestawie: Scala 2.11.8

Aby sprawdzić wersję Sparka i wersję Scala w klastrze, należy użyć polecenia "spark-shell".

Po skompilowaniu źródła pracy Spark ze Scala 2.11.8, a następnie przesłane zadanie & zadziałało !!!.

Powiązane problemy