IDEA 本地调试spark程序 Exception in thread "main" java.lang.NoSuchMethodError: scala.collection.immutable.

1.很简单的一测试程序:

2.run运行时:出现ERROR,报错行显示在  new SparkContext 这行。

val sc = new SparkContext(conf)

Exception in thread "main" java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashSet;
    at akka.actor.ActorCell$.<init>(ActorCell.scala:336)
    at akka.actor.ActorCell$.<clinit>(ActorCell.scala)
    at akka.actor.RootActorPath.$div(ActorPath.scala:159)
    at akka.actor.LocalActorRefProvider.<init>(ActorRefProvider.scala:464)
    at akka.remote.RemoteActorRefProvider.<init>(RemoteActorRefProvider.scala:124)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$2.apply(DynamicAccess.scala:78)
    at scala.util.Try$.apply(Try.scala:192)
    at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:73)
    at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(DynamicAccess.scala:84)
    at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(DynamicAccess.scala:84)
    at scala.util.Success.flatMap(Try.scala:231)
    at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:84)
    at akka.actor.ActorSystemImpl.liftedTree1$1(ActorSystem.scala:584)
    at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:577)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:141)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:118)
    at org.apache.spark.util.AkkaUtils$.org$apache$spark$util$AkkaUtils$$doCreateActorSystem(AkkaUtils.scala:122)
    at org.apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:54)
    at org.apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:53)
    at org.apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:1991)
    at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:160)
    at org.apache.spark.util.Utils$.startServiceOnPort(Utils.scala:1982)
    at org.apache.spark.util.AkkaUtils$.createActorSystem(AkkaUtils.scala:56)
    at org.apache.spark.rpc.akka.AkkaRpcEnvFactory.create(AkkaRpcEnv.scala:245)
    at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:52)
    at org.apache.spark.SparkEnv$.create(SparkEnv.scala:247)
    at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:188)
    at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:267)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:424)
    at com.spark.sample.WordCount$.main(WordCount.scala:11)
    at com.spark.sample.WordCount.main(WordCount.scala)
20/03/11 21:53:22 INFO Utils: Shutdown hook called
3.百度,码友说scala 和spark 版本不兼容导致。

本地安装的scala 版本是:2.11.12

idea 上Global Libraries  版本也是:2.11.12

由于saprk程序是maven项目,查看pom

<dependency>
   <groupId>org.apache.spark</groupId>
   <artifactId>spark-core_2.10</artifactId>
   <version>1.4.0</version>
</dependency>

4.到 maven repository 官网,查找scala匹配的spark版本,更改为:

<dependency>
   <groupId>org.apache.spark</groupId>
   <artifactId>spark-core_2.11</artifactId>
   <version>2.1.0</version>
</dependency>

5.重试程序,OK.通过。

在此感谢码友!!!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 异常在主线程中:"main" java.lang.nosuchmethoderror: 这个错误通常是因为代码中调用了一个不存在的方法。可能是因为方法名拼写错误、方法参数不匹配或者方法已经被删除或重命名。要解决这个问题,需要检查代码中调用的方法是否存在,确保方法名和参数正确。如果方法确实不存在,需要修改代码或者添加缺少的方法。 ### 回答2: 这个错误通常会在Java编程中出现,它指的是没有找到指定的方法。在程序调用一个类中的方法时,如果该方法的名称或参数与实际定义的方法不一致,则会出现此错误。如果在编译时错误,则会提示编译器错误消息,而运行时错误通常会显示堆栈跟踪信息,其中包含错误的类、方法和行号等信息。 造成这个错误的原因比较多,其中包括: 1.类文件版本不匹配。这种情况下,程序试图调用某个类中不存在的方法,因为该类的版本与应用程序代码不兼容。 2.类的字节码被戏弄了。这可能是因为class文件在运行时损坏或因为程序中的第三方库已经更改了类的方法,导致没有找到所需方法。 3.引用库文件错误。如果类引用了一个不正确的库文件,则程序将无法找到所需的方法。 4.方法名称错误。如果程序中方法名称错误,则程序将无法找到所请求的方法。 要解决此错误,需要确定引用正确版本的类文件、检查程序中是否存在错误的方法名称、检查库文件是否引用正确,或者尝试更新第三方库,或者检查文件缓存。因为这种错误通常没有明显的错误消息,因此需要仔细检查代码,找出具体的错误原因并进行修改。 ### 回答3: “exception in thread "main" java.lang.nosuchmethoderror”这个错误是Java编程中常见的错误之一,意思是在程序执行的过程中找不到指定的方法。 这个错误通常出现的原因是在代码中调用了不存在的方法或方法参数不匹配,尤其是在调用第三方库或框架中的方法时容易出现这个错误。还有可能是类路径问题,即找不到需要的类或库。 解决这个问题的方法有以下几种: 1.检查程序中调用的方法名是否正确,确保方法签名(方法的名称、参数、返回值)和实际使用一致; 2.检查依赖库的版本信息是否正确,确保使用的依赖库中包含程序中调用的方法; 3.检查类路径,确保程序能正确地找到需要的类或库文件; 4.可能是因为缺少一些依赖,需要手动添加缺失的依赖库; 5.可以尝试重新编译和构建程序,以更新库文件和依赖。 总之,这个错误的出现需要我们仔细检查代码,确认是否有语法错误或者方法调用不正确的问题。如果确认代码没有问题,可以考虑检查项目依赖、类路径等环境问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值