作者:QX封面精选 | 来源:互联网 | 2023-01-27 14:52
如何解决《java.lang.NoClassDefFoundError:org/apache/spark/sql/SparkSession》经验,为你挑选了2个好方法。
我用Java编写了一个Spark Job.当我提交作业时,它会给出以下错误:
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)
T. Gawęda..
5
您可能正在使用较低Spark版本在集群上部署应用程序.
请检查群集上的Spark版本 - 它应该与pom.xml中的版本相同.还请注意,所有Spark依赖项都应标记为provided
使用spark-submit来部署应用程序时
1> T. Gawęda..:
您可能正在使用较低Spark版本在集群上部署应用程序.
请检查群集上的Spark版本 - 它应该与pom.xml中的版本相同.还请注意,所有Spark依赖项都应标记为provided
使用spark-submit来部署应用程序时
2> 小智..:
提交时
火花提交
检查您的项目应该与pom.xml中的spark版本具有相同的依赖关系,
这可能是因为您在同一台机器上有两个Spark版本
为此,您可以创建两个各种软链接,并可以使用在其上构建项目的确切Spark版本
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
或可能是因为您以较高的Spark版本构建项目并以较低的Spark版本部署在集群上
为此,您必须在集群中升级您的Spark版本。cloudera为此提供了支持
https://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/Multiple-Spark-version-on-the-same-cluster/td-p/39880