spark点点滴滴 —— 运行scala任务异常处理

时间:2021-06-08 22:26:24

spark版本:2.0.1
最近在用spark提交scala语言写的任务时,提交任务总是失败,异常如下:

17/05/05 18:39:23 ERROR yarn.ApplicationMaster: User class threw exception: java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaMirrors$JavaMirror;
java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaMirrors$JavaMirror;
at LRPipeline$.main(LRPipeline.scala:17)
at LRPipeline.main(LRPipeline.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.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:627)
17/05/05 18:39:23 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 15,

网上查找了半天,结合自己测试,终于解决了,解决过程如下:
我的原始maven配置如下:

 <properties>
<scala.version>2.10.6</scala.version>
</properties>

<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-reflect</artifactId>
<version>${scala.version}</version>
</dependency>
</dependencies>

首先,可以确认spark2.0.1使用的scala版本时2.11.8,而上述maven中我使用的配置是2.10.6,因此尝试调整scala版本

调整版本后,继续mvn package编译,提交spark任务,问题依旧存在。

追查半天,最终发现竟然是替换maven中scala版本后,居然忘记mvn clean清理项目编译后再重新mvn package打包。导致maven的更改未生效。

关于有没有clean命令有什么不一样的地方,可以参考网友的整理,见这里

因此,执行mvn clean package,重新打包,提交任务后,运行成功!!!

把这个记录在此,希望大家都能少遇到一些坑。


【参考】http://*.com/questions/40128956/getting-exception-java-lang-nosuchmethoderror-scala-reflect-api-javauniverse