J'ai écrit un code pour le nombre de mots, mais lorsque j'ai essayé de l'exécuter à partir de CMD dans Windows en utilisant la commande ci-dessous, cela lève une exception.
Exception in thread "main" java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/java8/JFunction2$mcIII$sp at com.sample.WordCount$.main(WordCount.scala:22) at com.sample.WordCount.main(WordCount.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52) at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:849) at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167) at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195) at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86) at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) Caused by: java.lang.NoClassDefFoundError: scala/runtime/java8/JFunction2$mcIII$sp ... 14 more Caused by: java.lang.ClassNotFoundException: scala.runtime.java8.JFunction2$mcIII$sp
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SparkSampleInScala</groupId> <artifactId>WordCountSample</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>WordCountSample</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!--<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M1</version> </plugin> </plugins> </build> --> <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>2.4.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library --> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.12.8</version> </dependency> </dependencies> </project>
mais quand j'ai exécuté spark, soumettre le message d'erreur ci-dessous:
spark-submit --class com.sample.WordCount --master local file:///E:/WordCountSample/target/WordCountSample-0.0.1-SNAPSHOT.jar file:///C:/Users/siddh/OneDrive/Desktop/sample.txt
Alors, que faut-il faire dans ce cas? ?? J'utilise la version spark 2.4.0
et la version scala 2.12.8
qui est déjà installée sur mes fenêtres.
S'il vous plaît, aidez-moi car je suis coincé dans ce domaine depuis quelques jours.
Merci d'avance :)
3 Réponses :
On dirait que vous utilisez 2.4.x avec Scala 2.12. Cela pourrait être un problème de compatibilité. Référence de la documentation Spark: - Spark fonctionne sur Java 8+, Python 2.7 + / 3.4 + et R 3.1+. Pour l'API Scala, Spark 2.4.0 utilise Scala 2.11. Vous devrez utiliser une version Scala compatible (2.11.x).
OK, je vais l'essayer et vous le faire savoir
Merci beaucoup. Cela fonctionne pour moi après avoir changé la version de scala de 2.12. * À 2.11. *.
J'ai eu le même problème et je l'ai résolu en modifiant la version de Scala que j'utilise pendant le développement pour qu'elle corresponde à la version fournie avec Spark.
Quand je lance Spark avec ./spark-shell
, il dit Using Scala version 2.11.12
,
J'ai donc changé la version Scala dans le build.sbt de 2.12.8
à 2.11.12
et tout a fonctionné.
J'utilise la version Spark 2.4.3
.
Les autres réponses sont correctes.
Pour les ajouter, n'oubliez pas de mettre à jour le chemin du fichier jar dans la commande spark-submit
lorsque vous changez de version de Scala. Donc si vous utilisez sbt c'est:
paquet sbt
target / scala-2.12 / word-count-app_2.12-1.0.jar
à target / scala-2.11 / word-count-app_2.11-1.0. pot
. Merci pour la réponse. J'utilisais maven et c'était il y a longtemps: P
Je ne tourne que sous Linux. Pas Windows.
Lève également la même erreur sous Linux
Pouvez-vous utiliser sbt pour votre build? Si oui, alors le plugin d'assembly sbt s'occupera de toutes les dépendances à mettre dans fat jar.
J'ai utilisé maven comme outil de construction, c'est pourquoi j'ai publié le code pom.xml
Vraiment difficile à faire à distance. Je suis d'accord avec une autre personne. Sbt est la voie à suivre.
Je n'ai jamais utilisé sbt. J'ai pu le faire il y a quelques jours, mais je vois maintenant cette erreur pour la première fois et je n'ai pas pu trouver de solution appropriée pour cela sur Google
Intellij est-il utilisé?
Non, j'utilise eclipse ide
Pouvez-vous simplement l'essayer en mon nom en utilisant eclipse, linux au moins avec la configuration que j'ai mentionnée ici
Je n'ai pas cette configuration.
Tout le monde s'il vous plaît aider si possible