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 et je le soumets avec: p> erreur: p> 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>
build.sbt code>: 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)
9 Réponses :
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. p>
https://github.com/tdas/spark-shreaming -external-projets / blob / maître / kafka / build.sbt p>
Vous devez évidemment ajouter le plugin de montage à SBT. p>
https://github.com/tdas/spark-stream-streaming-external -Projects / arbre / maître / kafka / projet p>
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.
Veuillez essayer d'inclure toutes les bocaux de dépendance tout en soumettant l'application: P>
./ 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 P> blockQuote>
suivant build.sbt p> projet / plugins.sbt.sbt p> build.sbt code> a fonctionné pour moi. Cela nécessite également de mettre également le plugin code> assembly SBT-assembly dans un fichier sous le répertoire
Projets / code>.
addsbtplugin ("com.eed3si9n"% "SBT-assembly"% "0.14.1") code> p> p> p>
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 p> emballage MVN
Soumettez le "exemple-jar-with-dépendances.jar" p> p>
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. P>
Cela a résolu mon problème. p>
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 ... P>
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. P>
Copiez-le à: P>
/usr/local/spark/spark-2.1.0-bin-hadoop2.6/jars / P>
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"
Utiliser - packages code> argument sur
Spark-Soumettre code>, il prend un package MVN dans le format
Groupe: artefact: version, ... code> p>