spark-submit 报 NoClassDefFoundError 解决

报错信息
在使用 spark-submit 提交 scala App 的时候,报出了一下异常,而 代码就简单的调用了一下 map() 方法:

Exception in thread "main" java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/java8/JFunction1$mcII$sp
    at com.henvealf.spark.learn.mapPartitonsTest$.main(mapPartitonsTest.scala:33)
    at com.henvealf.spark.learn.mapPartitonsTest.main(mapPartitonsTest.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.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:736)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.NoClassDefFoundError: scala/runtime/java8/JFunction1$mcII$sp
    ... 11 more
Caused by: java.lang.ClassNotFoundException: scala.runtime.java8.JFunction1$mcII$sp
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 11 more


问题分析
很明显是 Scala 中的某个类没找到。

然而我在 spark-shell 里面使用 map() 的时候并没有什么问题。于是乎就设想 spark-shell 用的 Scala 与我系统上安装的 Scala 版本不一样。

我的Scala 版本为 2.12.8, 

然后就去 $SPARK_HOME/jars 下看了看,发现下面几个 jar 包:



而我编译程序的时候使用的是 2.12.8,就设想是版本不一致。

解决
将系统安装的 Scala 与编译时候用的 Scala 版本换成 Scala-2.11.8。

TIP :想知道当前 Spark 所对应的 Scala 版本,去 $SPARK_HOME/jars 下查看就可以。
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值