java.lang.NoClassDefFoundError: org / apache / spark / streaming / twitter / TwitterUtils $ pendant l'exécution de TwitterPopularTags
Je suis un débutant dans l'Étincelle du streaming et de la Scala. Pour un projet j'ai essayé de diriger TwitterPopularTags exemple présent dans github. Comme SBT assemblée n'a pas de travail pour moi et je n'étais pas familier avec SBT, je suis en train d'utiliser Maven pour la construction. Après beaucoup de quelques ratés au départ, j'étais capable de créer le fichier jar. Mais tout en essayant de l'exécuter, j'obtiens l'erreur suivante. Quelqu'un peut-il m'aider à résoudre cela?
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/streaming/twitter/TwitterUtils$
at TwitterPopularTags$.main(TwitterPopularTags.scala:43)
at TwitterPopularTags.main(TwitterPopularTags.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:331)
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.twitter.TwitterUtils$
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 more
J'ai ajouté les dépendances suivantes
Spark-streaming_2.10:1.1.0
Spark-core_2.10:1.1.0
Spark-streaming-twitter_2.10:1.1.0
J'ai même essayé la version 1.2.0 pour Spark-streaming-twitter mais qui me donnait la même erreur.
Merci pour l'aide à l'avance.
Ce qui concerne,
vpv
source d'informationauteur vpv
Vous devez vous connecter pour publier un commentaire.
Je vous remercie pour votre suggestion. J'ai été en mesure de résoudre ce problème en utilisant SBT assemblée. Voici les détails concernant la façon dont je l'ai fait.
Spark - Déjà présent dans Cloudera VM
Scala - vous ne savez Pas si c'est présent dans Cloudera, si non, nous pouvons l'installer
SBT - Cela doit aussi être installé. Je n'ai à la fois l'installe sur ma machine locale et transféré le Pot à la VM. Pour l'installation de cela, j'ai utilisé le lien suivant
https://gist.github.com/visenger/5496675
1) une Fois que tous ces éléments sont créés. Nous avons pour créer le dossier parent pour notre projet. J'ai créé un dossier appelé Twitter.
2) Créez un autre dossier avec la structure suivante Twitter/src/main/scala et des créé le .scala fichier dans ce dossier avec le nom TwitterPopularTags.scala. Cela a de légères modifications du code qui nous a le github. J'ai dû changer de déclarations d'importation
3) Après cela, créez un autre dossier dans le dossier parent avec le nom suivant
Twitter/projet
et de créer un fichier avec le nom de l'assemblée.sbt . C'est le chemin d'accès de l'assemblée plugin. Voici le code complet du fichier.
4) une Fois que les deux ci-dessus sont créés, créer un fichier dans le répertoire parent du projet (Twitter) avec le nom de construire.sbt. C'est là que nous avons besoin de fournir le nom de l' .Jar fichier dont nous avons besoin pour créer et aussi les dépendances. Veuillez noter que même les lignes vides entre les codes dans ce fichier sont importantes.
5) Enfin, nous devons nous ouvrir le terminal et allez dans le dossier parent du projet (Twitter). De là, entrez la commande suivante:
Ceci va télécharger les dépendances et créer le fichier jar dont nous avons besoin.
6) pour exécuter le programme que nous avons besoin d'une application twitter, créé en vertu de notre identité et de fournir le jeton d'authentification et d'autres détails. Le détail, étape sur la façon de créer cette est présent dans le lien suivant.
http://ampcamp.berkeley.edu/3/exercises/realtime-processing-with-spark-streaming.html
7) une Fois que nous avons tous les ci-dessus fait, nous pouvons utiliser le bon de commande envoyer de machine virtuelle pour exécuter le travail. Exemple de commande est
8) Cette impression de la sortie de la console afin de surveiller la sortie, il est préférable de réduire la fréquence
en ajustant le code.
S'il vous plaît laissez-moi savoir si plus d'informations sont nécessaires.
Merci & en ce qui Concerne,
VPV
Trouvé une solution (qui fonctionne avec 1.5.1 sûr, mais peut-être avec les versions antérieures):
Soumettre avec
--packages
paramètre et Maven coordonnées, comme:Décrit à
http://spark.apache.org/docs/latest/programming-guide.html#using-the-shell
Cette erreur signifie simplement que lors de l'exécution TwitterUtils classe(ou dans le langage scala TwitterUtils objet) n'est pas présentée, cependant au moment de la compilation, il est présenté(parce que sinon vous ne serez pas en mesure de construire avec maven). Vous devez vous assurer que le fichier jar que vous avez créé, en effet, contient cette classe/objet. Vous pouvez simplement décompresser ce fichier jar pour voir ce qui est réellement inclus. Très probablement, vos maven build fichier utilise la dépendance de construire le projet, mais ne pas l'inclure dans la version finale du pot.
Essayez de faire de cette façon...
comsumerkey consumersecret accesstoken accesssecret