Spark 中 Scala Seq 行的 NoSuchMethodError
NoSuchMethodError for Scala Seq line in Spark
我尝试在 Spark 中 运行 纯 Scala 代码时遇到错误,类似于这些帖子: and
他们的问题是他们使用了错误的 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(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)
EMR 上的 Spark 1.6 仍然使用 Scala 2.10 构建,所以是的,您遇到的问题与您链接的帖子中的问题相同。为了在 EMR 上使用 Spark,您目前必须使用 Scala 2.10 编译您的应用程序。
Spark 已经从 Spark 2.0(将在未来几个月内发布)开始将其默认的 Scala 版本升级到 2.11,因此一旦 EMR 支持 Spark 2.0,我们可能会遵循这个新的默认版本并使用 Scala 2.11 编译 Spark。
我尝试在 Spark 中 运行 纯 Scala 代码时遇到错误,类似于这些帖子:
他们的问题是他们使用了错误的 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(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)
EMR 上的 Spark 1.6 仍然使用 Scala 2.10 构建,所以是的,您遇到的问题与您链接的帖子中的问题相同。为了在 EMR 上使用 Spark,您目前必须使用 Scala 2.10 编译您的应用程序。
Spark 已经从 Spark 2.0(将在未来几个月内发布)开始将其默认的 Scala 版本升级到 2.11,因此一旦 EMR 支持 Spark 2.0,我们可能会遵循这个新的默认版本并使用 Scala 2.11 编译 Spark。