2017-07-20 14 views
0

私はkafkaからデータを読み込むスパークストリーミングアプリケーションを作成しました。 spark1.6.0kafka0.8.2.2でjarをビルドしました。スパークストリーミング:java.lang.NoClassDefFoundError:kafka/api/TopicMetadataRequest

KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicSet)

私は糸クライアントモードでアプリケーションを実行し、それが正常に動作しますが、私は、糸クラスタモードで実行すると、それは次の例外で失敗します:

私はカフカダイレクト・ストリームAPIを使用しています
User class threw exception: java.lang.NoClassDefFoundError: kafka/api/TopicMetadataRequest. 

私はアプリケーションjarにパッケージ化されたkafkaクラスを持っており、実行時にもkafka/api/TopicMetadataRequestがアプリケーションjarからロードされます。

コンパイルと実行時のバージョンが一致しない場合、NoClassDefFoundErrorが発生します。

----------- EDIT ------------

マイ.sbtがfolllowngたブロック:

libraryDependencies ++= Seq( 
"org.apache.spark" %% "spark-core" % "1.6.0" % "provided", 
"org.apache.spark" %% "spark-sql" % "1.6.0" % "provided", 
"org.apache.spark" %% "spark-streaming" % "1.6.0" % "provided", 
"org.apache.spark" %% "spark-mllib" % "1.6.0" % "provided", 
"org.apache.spark" % "spark-streaming-kafka_2.10" % "1.6.0",  
"org.apache.kafka" % "kafka_2.10" % "0.8.2.2", 
"org.springframework.security" % "spring-security-web" % "3.0.7.RELEASE", 
"org.scalatest" % "scalatest_2.10" % "3.0.0-M12" % "test", 
"junit" % "junit" % "4.11", 
"com.typesafe.play" % "play_2.10" % "2.4.0-M2", 
"org.apache.httpcomponents" % "httpclient" % "4.2.5") 



    mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) => { 
     case PathList("META-INF", xs @ _*) => MergeStrategy.discard 
     case x => MergeStrategy.first } } 

任意の提案これを解決する方法、またはこの例外が発生する理由は何ですか?

+0

あなたのjarファイルをクラスタに送信するための 'SPARK.JARS'設定が欠落しているようです。 – maasg

+0

として、アプリケーションjarのオプションを与える必要はありません。右 ? '$ ./bin/spark-submit --class path.to.your.Class - マスター糸--deploy-mode cluster [options] [app options]' – Alok

+0

どうしましたか? jark with spark1.6.0とkafka0.8.2.2 "_「spark-streaming-kafka」Sparkモジュールの依存関係をどう定義しましたか? –

答えて

0

KafkaUtilsはSparkでは利用できませんので、spark-streaming-kafkaモジュールを別途Sparkアプリケーションに追加する必要があります。

--packagesコマンドラインオプションを使用する必要があります。

./bin/spark-shell --packages org.apache.spark:spark-streaming-kafka-0-10_2.10:1.6.0 

ScalaとSparkの適切なバージョンを使用してください。

+0

私は糸のクライアントモードで動作しているので、問題は別のものになると思います。また、私はすでに 'spark-streaming-kafka': ' 'org.apache.spark"% "spark-streaming-kafka_2.10"% "1.6.0"、 "org.apache.kafka"% "kafka_2を追加しました。 10 "%" 0.8.2.2 "、" – Alok

関連する問題