概述
操作:spark 操作kudu时编写代码打成package使用spark-submit提交任务
使用spark-submit 提交任务时出现如下错误:
Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
at org.apache.spark.sql.SparkSession$Builder.config(SparkSession.scala:804)
at org.apache.spark.sql.SparkSession$Builder.appName(SparkSession.scala:795)
at com.hikvision.idatalight.workbench.modules.SparkReadKuduApp$.main(SparkReadKuduApp.scala:22)
at com.hikvision.idatalight.workbench.modules.SparkReadKuduApp.main(SparkReadKuduApp.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:498)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:730)
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)
提交的脚本
nohup spark-submit \
--class com.test.modules.SparkReadKuduApp \
--master yarn \
--deploy-mode cluster \
/apps/dev/test-1.0.0-jar-with-dependencies.jar >zy.log &
解决方案:
- 版本问题
查看idea中使用的版本和生产环境中是否一致
网上贴出的问题解决方案基本都是这样说的,但是我本人查看了版本确实是一致的,因此排除。
后面我发现了一个问题我们spark版本用的时cdh的:saprk 2.3-cdh-5.16。这才是问题所在。。。看解决方案二.
- spark2-submit
cdh版本的spark2.3 已经把spark-submit 改成spark2-submit了 。。。。因此提交脚本改成如下:
nohup spark2-submit \
--class com.test.modules.SparkReadKuduApp \
--master yarn \
--deploy-mode cluster \
/apps/dev/test-1.0.0-jar-with-dependencies.jar >zy.log &