Apache spark 如何修复';java.lang.NoSuchMethodError:scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object';

Apache spark 如何修复';java.lang.NoSuchMethodError:scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object';,apache-spark,yarn,oozie,Apache Spark,Yarn,Oozie,因此,我开始编写自己的Oozie工作流,其中包含ApacheSpark action,问题是,尽管我明确地用Scala 2.11.8和Spark 2.3.0打包了我的源代码,Thread说 java.lang.NoSuchMethodError:scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object 有一个docker容器,其中包含运行在ec2机器上的Hortonworks HDP沙盒,该机器具有16核cpu和41 Gig内

因此,我开始编写自己的Oozie工作流,其中包含ApacheSpark action,问题是,尽管我明确地用Scala 2.11.8和Spark 2.3.0打包了我的源代码,Thread说

java.lang.NoSuchMethodError:scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object

有一个docker容器,其中包含运行在ec2机器上的Hortonworks HDP沙盒,该机器具有16核cpu和41 Gig内存。我已经使用命令行更新了Oozie共享库。下面是我的job.properties文件和workflow.xml文件

作业属性

jobTracker=sandbox-hdp.hortonworks.com:8032
master=yarn-cluster
oozie.action.sharelib.for.spark=spark2
oozie.action.sharelib.for.spark.exclusion=oozie/jackson
# Time and schedule details
start_date=2015-01-01T00:00Z
end_date=2015-06-30T00:00Z
frequency=55 23 L * ?
nameNode=hdfs://sandbox-hdp.hortonworks.com:8020
# Workflow to run
wf_application_path=hdfs://sandbox-hdp.hortonworks.com:8020/user/hue/learn_oozie/ch08/spark_rainfall
# Coordinator to run
oozie.coord.application.path=hdfs://sandbox-hdp.hortonworks.com:8020/user/hue/learn_oozie/ch08/spark_rainfall
# Datasets
data_definitions=hdfs://sandbox-hdp.hortonworks.com:8020/user/hue/learn_oozie/ch08/datasets/datasets.xml
# Controls
timeout=10
concurrency_level=1
execution_order=FIFO
materialization_throttle=1
workflow.xml


${jobTracker}
${nameNode}
${master}
“火花Ch08最大降雨量计算器”
life.jugnu.learnoozie.ch08.maxlainment
hdfs://sandbox-hdp.hortonworks.com:8020/user/hue/learn_oozie/ch08/rainbow/target/scala-2.11/rainbow_2.11-1.0.14.jar
--conf spark.warn.historyServer.address=http://sandbox-hdp.hortonworks.com:18088
--conf spark.eventLog.dir=hdfs://sandbox-hdp.hortonworks.com:8020/user/spark/applicationHistory
--conf spark.eventLog.enabled=true
${input}
${output}
操作失败,错误消息[${wf:errorMessage(wf:lastErrorNode())}]
我希望此工作流运行时不会出现任何问题,并在远程集群中的HDFS上写入结果,但spark操作因下面的错误消息而终止

线程“main”java.lang.NoSuchMethodError中出现异常:scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object; 位于org.apache.spark.deploy.warn.ApplicationMasterArguments.parseArgs(ApplicationMasterArguments.scala:45) 位于org.apache.spark.deploy.warn.ApplicationMasterArguments。(ApplicationMasterArguments.scala:34) 位于org.apache.spark.deploy.warn.ApplicationMaster$.main(ApplicationMaster.scala:576) 位于org.apache.spark.deploy.warn.ApplicationMaster.main(ApplicationMaster.scala)


我也有同样的问题。这是因为我们在集群上使用了Oozie的4.1.0版本。Spark actions仅适用于4.2.0+

根据我的经验,让Spark actions在Oozie中工作是一个调试练习。我首先在属性中设置oozie.use.system.libpath=true,如果您的sharelib路径是非默认路径,则设置oozie.libpath(默认值类似于/user/oozie/share/lib/)