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://stackoverflow.com/questions/40128956/getting-exception-java-lang-nosuchmethoderror-scala-reflect-api-javauniverse