让我解释一下这个问题,它让我发疯了......
我有一个我想从oozie工作流程提交的spark2程序。
因为默认情况下spark2无法直接从oozie提交,所以我创建了一个带有spark2-submit语句的sh来执行spark2作业。
如果我从控制台运行它,它可以完美运行。但是,当我从oozie工作流程运行它时,没有办法让它工作,但更糟糕的是我看不到执行返回的日志上的明确错误。
这些是我正在使用的文件:
thintest.sh:
spark2-submit --master yarn --class main hdfs:///home/cloudera/thintest/thintest-assembly-0.1.jar
job.properties
oozie.use.system.libpath=True
dryrun=False
nameNode=hdfs://quickstart.cloudera:8020
jobTracker=quickstart.cloudera:8032
security_enabled=False
hiveXml=/etc/hive/conf/hive-site.xml
appName=thintest
appPath=${nameNode}/home/cloudera/thintest
oozie.wf.application.path=${appPath}/workflow.xml
shellPath=${appPath}/thintest.sh
workflow.xml
<?xml version="1.0" encoding="UTF-8"?>
<workflow-app name="thintest" xmlns="uri:oozie:workflow:0.5">
<start to="shell"/>
<action name="shell">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>${shellPath}</exec>
<env-var>HADOOP_USER_NAME=${wf:user()}</env-var>
<file>${shellPath}#thintest.sh</file>
</shell>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
非常感谢任何帮助。
答案 0 :(得分:0)
Oozie有一个spark-2配置文件,Oozie的Spark动作在用Oozie构建之后完美运行。
我不建议黑客行动,因为它迟早会变成噩梦。