在尝试为oozie spark2操作加载依赖项jar时遇到以下错误。在下面添加了workflow.xml。
错误:
2019-06-12 07:00:35,140警告SparkActionExecutor:523- SERVER [manager-0] USER [root] GROUP [-]令牌[] APP [spark-wf] 作业[0000068-190611183932696-oozie-root-W] ACTION [0000068-190611183932696-oozie-root-W @ spark-node]启动器 错误,原因:主类[org.apache.oozie.action.hadoop.SparkMain], main()抛出异常, 尝试添加(hdfs:// $ {nameNode} / $ {workflowAppUri} / lib / $ {dependencyJar}) 多次访问分布式缓存。
workflow.xml
<workflow-app xmlns="uri:oozie:workflow:0.3" name="spark-wf">
<start to="spark-node"/>
<action name="spark-node">
<spark xmlns="uri:oozie:spark-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<master>yarn-cluster</master>
<name>test_spark</name>
<class>${className}</class>
<jar>${workflowAppUri}/lib/${executableJar}</jar>
<spark-opts>--jars ${workflowAppUri}/lib/${dependencyJar}</spark-opts>
<arg>${arg1}</arg>
<arg>${arg2}</arg>
</spark>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
与oozie和spark2 sharelib目录中的重复jar相关的问题不同。删除了spark2 sharelib中重复的jar。但这无济于事。
这可能是什么原因? 请帮我解决这个问题!
答案 0 :(得分:0)
如果我们在应用程序根目录的lib目录中添加jar,那么oozie会自动将jar分发到它的分布式缓存中。就我而言,我试图添加已经在lib目录中的jar。因此,我只需要从工作流程定义中删除以下行即可。
<spark-opts>--jars ${workflowAppUri}/lib/${dependencyJar}</spark-opts>
我也测试过,如果您要附加lib目录中不可用的jar,可以在工作流定义中像下面这样提及。
<spark-opts>--jars ${nameNode}/tmp/{someJar}</spark-opts>