2016-09-08 7 views
1

スパーク2.0.0ジョブのストリーミング、またはspark-streaming-kafka-0-8_2.11 V2.0.0を使用して、そして​​とそれを提出で->を使用している場合、私は次のエラーを取得する:SBT-アセンブリを詰めたスパーク2.0.0ストリーミングジョブはScalaのランタイムメソッドを欠い

build.sbt

"org.apache.spark" %% "spark-core" % "2.0.0" % "provided", 
"org.apache.spark" %% "spark-streaming" % "2.0.0" % "provided" 
spark-2-streaming-nosuchmethod-arrowassoc

のみ提供さ依存性を置く:

Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 72.0 failed 1 times, most recent failure: Lost task 0.0 in stage 72.0 (TID 37, localhost): java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;

私はGitHubのレポにこの現象の簡単なイラストを入れて

ドライバコードのどこにでも->を使用し、sbt-assemblyで梱包し、ジョブを送信するとエラーが発生します。これは大きな問題ではなく、ArrayAssocを使用すると回避できますが、spark-streaming-kafka-0-8_2.11 v2.0.0はそれがどこかにあり、同じエラーが発生します。

ので、同じようにそれをやって:あなたがやっている場合

wordCounts.map{ 
    case (w, c) => Map(w -> c) 
}.print() 

その後

sbt assembly 

その後

spark-2.0.0-bin-hadoop2.7/bin/spark-submit \ 
--class org.apache.spark.examples.streaming.NetworkWordCount \ 
--master local[2] \ 
--deploy-mode client \ 
./target/scala-2.11/spark-2-streaming-nosuchmethod-arrowassoc-assembly-1.0.jar \ 
localhost 5555 
+0

uber JARにScalaを含めますか? –

+0

もちろん、sbt-assemblyにはデフォルトでScalaランタイムが含まれています。しかし、確かめるために、私もそれを明示的に要求しようとしました。 – Utgarda

答えて

0
  1. スパークジョブは、すなわち、Scalaのランタイムなしでパックされなければなりませんそれはsbtアセンブリで、これを追加します:assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)
  2. 私はSPARK_HOME環境変数がSpark 1.6.2を指していて、どこで実行しても問題ありません​​から、SPARK_HOMEを正しく設定する必要があります。
関連する問題