scala代码在spark中抛出异常
发布时间:2020-12-16 08:58:47 所属栏目:安全 来源:网络整理
导读:我是 scala和spark的新手.今天我尝试编写一些代码,并让它在spark上运行,但是有一个例外. 此代码在本地scala中工作 import org.apache.commons.lang.time.StopWatchimport org.apache.spark.{SparkConf,SparkContext}import scala.collection.mutable.ListBuf
我是
scala和spark的新手.今天我尝试编写一些代码,并让它在spark上运行,但是有一个例外.
此代码在本地scala中工作 import org.apache.commons.lang.time.StopWatch import org.apache.spark.{SparkConf,SparkContext} import scala.collection.mutable.ListBuffer import scala.util.Random def test(): List[Int] = { val size = 100 val range = 100 var listBuffer = new ListBuffer[Int] // here throw an exception val random = new Random() for (i <- 1 to size) listBuffer += random.nextInt(range) listBuffer.foreach(x => println(x)) listBuffer.toList } 但是当我将这段代码放入spark中时,会抛出一个异常说: 15/01/01 14:06:17 INFO SparkDeploySchedulerBackend: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.0 Exception in thread "main" java.lang.NoSuchMethodError: scala.runtime.ObjectRef.create(Ljava/lang/Object;)Lscala/runtime/ObjectRef; at com.tudou.sortedspark.Sort$.test(Sort.scala:35) at com.tudou.sortedspark.Sort$.sort(Sort.scala:23) at com.tudou.sortedspark.Sort$.main(Sort.scala:14) at com.tudou.sortedspark.Sort.main(Sort.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:483) at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 如果我注释掉下面的代码,代码在spark中工作 for (i <- 1 to size) 请有人解释原因. 解决方法
谢谢@Imm,我已经解决了这个问题.根本原因是我的本地scala是2.11.4,但我的spark集群运行在1.2.0版本. 1.2版本的spark由2.10 scala编译.
因此解决方案是通过2.10 scala编译本地代码,并将编译后的jar上传到spark.一切正常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |