KafkaUtils Klasse nicht gefunden in Spark streaming
Habe ich gerade begann mit Spark Streaming und ich bin versucht, erstellen Sie eine Beispielanwendung, die Wörter zählt, die aus einem Kafka-stream. Obwohl es kompiliert mit sbt package
, wenn ich es laufen lasse, bekomme ich NoClassDefFoundError
. Diese post scheint das gleiche problem haben, aber die Lösung ist für Maven und ich habe nicht in der Lage gewesen, um es zu reproduzieren mit sbt.
KafkaApp.scala
:
import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.streaming.kafka._
object KafkaApp {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("kafkaApp").setMaster("local[*]")
val ssc = new StreamingContext(conf, Seconds(1))
val kafkaParams = Map(
"zookeeper.connect" -> "localhost:2181",
"zookeeper.connection.timeout.ms" -> "10000",
"group.id" -> "sparkGroup"
)
val topics = Map(
"test" -> 1
)
//stream of (topic, ImpressionLog)
val messages = KafkaUtils.createStream(ssc, kafkaParams, topics, storage.StorageLevel.MEMORY_AND_DISK)
println(s"Number of words: %{messages.count()}")
}
}
build.sbt
:
name := "Simple Project"
version := "1.1"
scalaVersion := "2.10.4"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.1.1",
"org.apache.spark" %% "spark-streaming" % "1.1.1",
"org.apache.spark" %% "spark-streaming-kafka" % "1.1.1"
)
resolvers += "Akka Repository" at "http://repo.akka.io/releases/"
Und ich gebe es mit:
bin/spark-submit \
--class "KafkaApp" \
--master local[4] \
target/scala-2.10/simple-project_2.10-1.1.jar
Fehler:
14/12/30 19:44:57 INFO AkkaUtils: Connecting to HeartbeatReceiver: akka.tcp://[email protected]:65077/user/HeartbeatReceiver
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils$
at KafkaApp$.main(KafkaApp.scala:28)
at KafkaApp.main(KafkaApp.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:329)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.streaming.kafka.KafkaUtils$
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
InformationsquelleAutor kahlo | 2014-12-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
spark-senden nicht automatisch in das Paket mit KafkaUtils. Sie müssen in Ihrem Projekt JAR. Für die, die Sie brauchen, um zu erstellen ein all-inclusive-uber-jar, mit sbt Baugruppe. Hier ist ein Beispiel bauen.sbt .
https://github.com/tdas/spark-streaming-external-projects/blob/master/kafka/build.sbt
Du natürlich auch hinzufügen müssen, um die assembly-plugin zu SBT.
https://github.com/tdas/spark-streaming-external-projects/tree/master/kafka/project
mit der änderung, wenn ich stb-Paket, bekam ich Fehler. : Fehler: nicht gefunden: Objekt AssemblyKeys import AssemblyKeys._ ^ [Fehler] Type error in expression
Nur lassen sich die ersten import-Zeile und die "assemblySettings" - Zeile funktioniert bei mir.
InformationsquelleAutor Tathagata Das
Bitte versuchen Sie, einschließlich aller Abhängigkeit Gläser, während die Einreichung Anwendung:
InformationsquelleAutor Sandeep
Folgenden
build.sbt
für mich gearbeitet. Es erfordert, dass Sie auch diesbt-assembly
plugin in einer Datei unter derprojects/
Verzeichnis.bauen.sbt
project/plugins.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.1")
InformationsquelleAutor Vibhuti
das gleiche problem, ich löste es, indem erstellen der jar mit Abhängigkeiten.
folgenden code hinzufügen pom.xml
mvn package
senden "example-jar-with-dependencies.jar"
InformationsquelleAutor Nilesh
Hinzugefügt, die Abhängigkeit extern, Projekt-->Eigenschaften--> java Build Path-->Bibliotheken--> add External jars, und fügen Sie die erforderlichen jar.
dieser mein Problem gelöst.
InformationsquelleAutor Suresh
Verwendung von Spark-1.6 die Arbeit zu tun für mich, ohne den Aufwand der Handhabung, damit viele externe jars... Kann ganz schön erschweren verwalten...
InformationsquelleAutor Gi1ber7
Könnten Sie auch den download der jar-Datei und legen Sie es in der Funke-lib-Ordner, da es nicht installiert ist, mit Funke, anstatt zu schlagen, Ihr Kopf versucht zu Wetten, SBT bauen.sbt zu arbeiten.
http://central.maven.org/maven2/org/apache/spark/spark-streaming-kafka-0-10_2.10/2.1.1/spark-streaming-kafka-0-10_2.10-2.1.1.jar
kopieren Sie es auf:
/usr/local/spark/spark-2.1.0-bin-hadoop2.6/Gläser/
InformationsquelleAutor Walker Rowe
verwenden Sie die unten zu bauen.sbt
Dies das Problem beheben
InformationsquelleAutor Sandeep Sompalle