2016-09-05 9 views
0

SparkストリーミングでKafkaから消費されたメッセージを印刷しようとしています。ただし、次のエラーが発生します。KafkaUtils java.lang.NoClassDefFoundError Spark Streaming

16/09/04 16:03:33エラーApplicationMaster:ユーザークラスが例外をスローしました:java.lang.NoClassDefFoundError:org/apache/spark/streaming/kafka/KafkaUtils $

この問題に関しては、StackOverflowでいくつかの質問があります。例:https://stackoverflow.com/questions/27710887/kafkautils-class-not-found-in-spark-streaming#=

この回答は私のために解決されていません。私はsbtアセンブリを使用して "uber jar"を作成しようとしましたが、どちらもうまくいきませんでした。

SBTファイルの内容:

name := "StreamKafka" 

version := "1.0" 

scalaVersion := "2.10.5" 


libraryDependencies ++= Seq(
    "org.apache.kafka" % "kafka_2.10" % "0.8.2.1" % "provided", 
    "org.apache.spark" % "spark-streaming_2.10" % "1.6.1" % "provided", 
    "org.apache.spark" % "spark-streaming-kafka_2.10" % "1.6.1" % "provided", 
    "org.apache.spark" % "spark-core_2.10" % "1.6.1" % "provided" exclude("com.esotericsoftware.minlog", "minlog") exclude("com.esotericsoftware.kryo", "kryo") 
) 

resolvers ++= Seq(
    "Maven Central" at "https://repo1.maven.org/maven2/" 
) 


assemblyMergeStrategy in assembly := { 
    case m if m.toLowerCase.endsWith("manifest.mf")   =>  MergeStrategy.discard 
    case m if m.toLowerCase.matches("meta-inf.*\\.sf$")  =>  MergeStrategy.discard 
    case "log4j.properties"         =>  MergeStrategy.discard 
    case m if m.toLowerCase.startsWith("meta-inf/services/") =>  MergeStrategy.filterDistinctLines 
    case "reference.conf"         =>  MergeStrategy.concat 
    case _             =>  MergeStrategy.first 
    case PathList(ps @ _*) if ps.last endsWith "pom.properties" => MergeStrategy.discard 
    case x => val oldStrategy = (assemblyMergeStrategy in assembly).value 
    oldStrategy(x) 
} 
+0

ジョブが送信されているSparkノードにKafkaをインストールする必要がありますか? – user3357381

+0

spark-streaming-kafkaから削除を削除 –

+0

@vishnuviswanath私は削除しました。まだ同じエラーがスローされています。 – user3357381

答えて

0

他の人が問題を簡単に解決できるようにコメントからの回答を投稿する。あなたはカフカの「提供」を削除する必要が

は、コマンドにsbt assembly

を実行する必要がjarファイルにバンドルされる依存関係の

"org.apache.kafka" % "kafka_2.10" % "0.8.2.1" % "provided", 
"org.apache.spark" % "spark-streaming-kafka_2.10" % "1.6.1" % "provided" 

の依存関係も、あなたが権利を実行していることを確認してくださいjarファイル。正しいjarファイル名は、sbt assemblyコマンドのログを調べることで見つけることができます。

0

これは聞いて愚かかもしれないが、streamkafka_ 2.10-1.0.jarは、組織/ apacheの/火花/ストリーミング/カフカ/ KafkaUtils.class

が含まれていません
+0

実際にはそれが含まれています... – lege

関連する問題