在Oozie工作流中使用类变量



我有一个oozie工作流,它有以下格式:

<workflow-app xmlns="uri:oozie:workflow:0.5" name="${componente}">
...
<start to="S000_Guida_rilevazioni_annuali"/>
<action name="action name 1" cred="hcat,hs2-creds">
<spark xmlns="uri:oozie:spark-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<master>${master}</master>
<mode>cluster</mode>
<name>class 1 name</name>
<class>com.sample.project</class>
<jar>${wf_path}/jar_file.jar</jar>
<spark-opts>--queue ${queueName} --num-executors 2 --executor-cores 2 --executor-memory 2G --jars ${hiveWarehouseConnectorLib}</spark-opts>
</spark>
<ok to="action name 2" />
<error to="killJobAction"/>
</action>
...

这个工作流实现了一个决策,如果进入错误,那么它将运行一个名为killJobAction的操作。

现在我要实现的是根据scala类中变量的值来改变代码流。假设一个布尔变量调用varWF=true/false。这可能吗?

您可以将spark作业包装在shell action中,并使用spark从shell脚本提交。如何捕捉oozie火花输出

并在Oozie决策节点中使用此捕获https://oozie.apache.org/docs/3.2.0-incubating/WorkflowFunctionalSpec.html#a3.1.4_Decision_Control_Node

例如

<workflow-app name="foo-wf" xmlns="uri:oozie:workflow:0.1">
...
<decision name="mydecision">
<switch>
<case to="next-action1">
${wf:actionData('shell_action_name')['variable_name'] eq 'true'}
</case>
<default to="next-action2"/>
</switch>
</decision>
...
</workflow-app>

最新更新