【发布时间】:2016-02-17 19:28:07
【问题描述】:
尝试在 Spark 中运行类似于以下帖子的纯 Scala 代码时出现错误:this 和 this
他们的问题是他们使用了错误的 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)
【问题讨论】:
-
你能举个例子吗?
-
Spark 1.6 基于 Scala 2.10 而不是 2.11。您是否专门为 2.11 编译了 Spark?您的第二个链接的公认答案是这个问题 - 为在 Spark(即 2.10)上运行的 2.11 编译的二进制文件。
-
我刚刚在 Spark 网站上查到了这一点,你是对的——Spark 1.6 仍然基于 2.10。一位同事告诉我,1.6 将 Scala 版本升级到了 2.11,所以这就是我过去几周一直在使用的。我的其他 Spark 工作也运行良好。
标签: scala apache-spark emr