在使用spark进行开发时,本地运行成功,但是上传到集群发生如下错误:
java.lang.NoSuchMethodError: scala.runtime.ObjectRef.create(Ljava/lang/Object;)Lscala/runtime/ObjectRef;
此问题是由于本地编译时用到的scala版本和Spark集群所用Scala版本不一致导致的,可以通过修改本地scala版本号进行解决。
打开Spark Job监控页面,默认端口是4040,点击environment,可以查看到scala版本,如图所示。
可以发现,集群所用版本为2.10.5,而本地编译时使用的是2.11.7,所以修改本地scala版本,然后rebuild,提交集群运行,成功!