10
votes

Classe de Kafkautils non trouvée dans Spark Streaming

Je viens de commencer avec Spark Streaming et j'essaie de construire une application d'exemple qui compte les mots d'un flux de Kafka. Bien qu'il compile avec le package SBT code>, lorsque je l'exécute, j'obtiens noclassduffoundEfferror code>. Ce publier semble avoir le même problème, mais la solution est pour Maven et je n'ai pas été Capable de le reproduire avec SBT.

kafkaapp.scala code>: p> xxx pré>

build.sbt code>: P > xxx pré>

et je le soumets avec: p> xxx pré>

erreur: p>

14/12/30 19:44:57 INFO AkkaUtils: Connecting to HeartbeatReceiver: akka.tcp://sparkDriver@192.168.5.252: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)


0 commentaires

9 Réponses :


16
votes

Spark-Soumettre ne met pas automatiquement le paquet contenant des kafkautils. Vous devez avoir dans votre pot de projet. Pour cela, vous devez créer un Uber-Jar tout compris, en utilisant Assembly SBT . Voici un exemple de construction.sbt.

https://github.com/tdas/spark-shreaming -external-projets / blob / maître / kafka / build.sbt

Vous devez évidemment ajouter le plugin de montage à SBT.

https://github.com/tdas/spark-stream-streaming-external -Projects / arbre / maître / kafka / projet


3 commentaires

J'obtiens aussi le même problème que j'utilise Maven. Après cela, j'ai inclus "org.apache.maven.plugins" dans mon pom.xml mais le problème n'est pas résolu. Tout autre paramètre que je dois vérifier?


Avec le changement, si je gère STB Package, j'ai eu une erreur. : Erreur: non trouvé: Objet Assemblykeys Import Assemblykeys._ ^ [Erreur] Tapez l'erreur dans l'expression


@Johnsam laissez simplement éloigner la première ligne d'importation et la ligne «assemblages», fonctionne pour moi.



7
votes

Veuillez essayer d'inclure toutes les bocaux de dépendance tout en soumettant l'application:

./ Spark-Soumettre --Name "SampleApp" - Noir-mode-Mode - Master Spark: // hôte: 7077 --Class com.stackexchange.sampleAppeapp --jars $ Spark_install_dir / Spark-Streaming-Kafka_2. 10-1.3.0.jar, $ kafka_install_dir / libs / kafka_2.10-0.8.2.0.jar, $ kafka_install_dir / libs / métriques-core-2.2.0.jar, $ kafka_install_dir / libs / zkclient-0..jar Spark- Exemple-1.0-Snapshot.jar


0 commentaires

1
votes

suivant build.sbt a fonctionné pour moi. Cela nécessite également de mettre également le plugin assembly SBT-assembly dans un fichier sous le répertoire Projets / .

build.sbt xxx

projet / plugins.sbt.sbt

addsbtplugin ("com.eed3si9n"% "SBT-assembly"% "0.14.1")


0 commentaires

0
votes

Rencontrez le même problème, je l'ai résolu en construisant le pot avec des dépendances.

Ajoutez le code ci-dessous à pom.xml xxx

emballage MVN Soumettez le "exemple-jar-with-dépendances.jar"


0 commentaires

0
votes

a ajouté la dépendance en externe, Projet -> Propriétés -> Java Build Chemin -> Bibliothèques -> Ajoutez des pots externes et ajoutez le pot requis.

Cela a résolu mon problème.


0 commentaires

0
votes

Utiliser Spark 1.6 Faites le travail pour moi sans que le problème de manipuler tant de pots externes ... peut être assez compliqué pour gérer ...


0 commentaires

0
votes

Vous pouvez également télécharger le fichier JAR et le mettre dans le dossier Spark Lib, car il n'est pas installé avec Spark, au lieu de battre votre tête en essayant de parier SBT Build.Sbt pour fonctionner.

http://central.maven.org/maven2/org/apache/spark/spark-spark-kafka-0-10_2.10/2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.11 /Spark-streaming-kafka-0-10_2.10-2.1.1.jar

Copiez-le à:

/usr/local/spark/spark-2.1.0-bin-hadoop2.6/jars /


0 commentaires

-1
votes
name := "kafka"

version := "0.1"

scalaVersion := "2.11.12"

retrieveManaged := true

fork := true

//libraryDependencies += "org.apache.spark" % "spark-streaming_2.11" % "2.2.0"
//libraryDependencies += "org.apache.spark" % "spark-streaming-kafka-0-8_2.11" % "2.1.0"

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.2.0"

//libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.0"

libraryDependencies += "org.apache.spark" %% "spark-streaming" % "2.2.0"

// https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka-0-8
libraryDependencies += "org.apache.spark" %% "spark-streaming-kafka-0-8" % "2.2.0" % "provided"

// https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka-0-8-assembly
libraryDependencies += "org.apache.spark" %% "spark-streaming-kafka-0-8-assembly" % "2.2.0"

0 commentaires

0
votes

Utiliser - packages argument sur Spark-Soumettre , il prend un package MVN dans le format Groupe: artefact: version, ...


0 commentaires