web-dev-qa-db-fra.com

java.lang.NoClassDefFoundError: org/Apache/spark/sql/SparkSession

J'ai écrit un Job Spark en Java. Lorsque je soumets le travail, l'erreur ci-dessous apparaît:

Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/spark/sql/SparkSession
        at com.thinkbiganalytics.veon.util.SparkSessionBuilder.getOrCreateSparkSession(SparkSessionBuilder.Java:12)
        at com.thinkbiganalytics.veon.AbstractSparkTransformation.initSparkSession(AbstractSparkTransformation.Java:92)
        at com.thinkbiganalytics.veon.transformations.SDPServiceFeeDeductionSourceToEventStore.init(SDPServiceFeeDeductionSourceToEventStore.Java:57)
        at com.thinkbiganalytics.veon.AbstractSparkTransformation.doTransform(AbstractSparkTransformation.Java:51)
        at com.thinkbiganalytics.veon.transformations.SDPServiceFeeDeductionSourceToEventStore.main(SDPServiceFeeDeductionSourceToEventStore.Java:51)
        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.SparkSubmit$.org$Apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:745)
        at org.Apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
        at org.Apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
        at org.Apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
        at org.Apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: Java.lang.ClassNotFoundException: org.Apache.spark.sql.SparkSession
        at Java.net.URLClassLoader.findClass(URLClassLoader.Java:381)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:424)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:357)
4
Umar

lors de la soumission 

spark-submit 

vérifiez que votre projet doit avoir la même dépendance que la version spark dans pom.xml,

C'est peut-être parce que vous avez deux versions d'étincelle sur la même machine

pour cela, vous pouvez créer deux liens symboliques différents et utiliser la version spark exacte sur laquelle vous avez construit votre projet.

spark1-submit -> /Users/test/sparks/spark-1.6.2-bin-hadoop2.6/bin/spark-submit

spark2–submit -> /Users/test/sparks/spark-2.1.1-bin-hadoop2.7/bin/spark-submit

ou peut-être à cause de vous avez construit votre projet avec une version plus haute d'allumage et déployé sur le cluster avec une version plus basse d'allumage

pour cela, vous devez mettre à niveau votre version spark dans le cluster. cloudera fournit une assistance technique https://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/Multiple-Spark-version-on-the-same-cluster/td-p/ 39880

3
UserszrKs

Vous déployez probablement votre application sur le cluster avec la version Spark inférieure.

Veuillez vérifier la version de Spark sur votre cluster. Elle devrait être identique à la version de pom.xml. Notez également que toutes les dépendances Spark doivent être marquées provided lorsque vous utilisez spark-submit pour déployer une application.

5
T. Gawęda

Selon l'exception que vous obtenez, je pense que le fichier JAR requis manque, vous devez ajouter le fichier JAR requis dans votre chemin de classe afin de résoudre le problème.

référez-vous à ce link pour télécharger le fichier JAR requis 

1
JavaLearner

la fuite de pots d'étincelles va provoquer ce problème si vous utilisiez Intellij IDEA, vous pouvez suivre les étapes ci-dessous: Fichier -> Structure du projet -> Modules -> spark-examples_2.11 -> Dépendances Jars -> {spark dir} /spark/Assembly/target/scala-2.11/jars/

0
qian xi