Spark中

时间:2016-02-17 19:28:08

标签: scala apache-spark emr

尝试在Spark中运行普通的Scala代码时遇到错误,类似于以下帖子:thisthis

他们的问题是他们使用错误的Scala版本来编译他们的Spark项目。但是,我的版本是正确的。

我在AWS EMR集群上安装了Spark 1.6.0来运行该程序。该项目是在我的本地机器上编译的,安装了Scala 2.11,2.11列在所有依赖项和构建文件中,没有任何引用2.10。

这是抛出错误的确切行:

var fieldsSeq: Seq[StructField] = Seq()

这是确切的错误:

Exception in thread "main" java.lang.NoSuchMethodError: scala.runtime.ObjectRef.create(Ljava/lang/Object;)Lscala/runtime/ObjectRef;
at com.myproject.MyJob$.main(MyJob.scala:39)
at com.myproject.MyJob.main(MyJob.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:497)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)
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)

1 个答案:

答案 0 :(得分:0)

EMR上的Spark 1.6仍然使用Scala 2.10构建,所以是的,您遇到的问题与您链接的帖子相同。为了在EMR上使用Spark,您当前必须使用Scala 2.10编译您的应用程序。

从Spark 2.0开始,Spark已将其默认Scala版本升级到2.11(将在未来几个月内发布),因此一旦EMR支持Spark 2.0,我们可能会遵循这个新的默认值并使用Scala 2.11编译Spark。