gpt4 book ai didi

Scala代码在spark中抛出异常

转载 作者:行者123 更新时间:2023-12-04 06:18:12 24 4
gpt4 key购买 nike

我是 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版本。 spark 1.2 版本由 2.10 scala 编译。

所以解决办法是用2.10的scala编译本地代码,把编译好的jar上传到spark中。一切正常。

关于Scala代码在spark中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27728731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com