我是hadoop生态系统的初学者。我试图从同一个通用workflow.xml文件中调用三个不同的作业,但是将不同的参数传递给每个子工作流。
子工作流程:
<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.4" name="special-fork">
<global>
<job-tracker>${jT}</job-tracker>
<name-node>${nN}</name-node>
</global>
<fork name="special-fork">
<path start="aa"/>
<path start="bb"/>
<path start="cc"/>
</fork>
<action name="aa">
<sub-workflow>
<app-path>${nN}/xyz/workflow.xml</app-path>
<propagate-configuration/>
</sub-workflow>
<ok to="special-join"/>
<error to="kill"/>
</action>
<action name="bb">
<sub-workflow>
<app-path>${nN}/xyz/workflow.xml</app-path>
<propagate-configuration/>
</sub-workflow>
<ok to="special-join"/>
<error to="kill"/>
</action>
<action name="cc">
<sub-workflow>
<app-path>${nN}/xyz/workflow.xml</app-path>
<propagate-configuration/>
</sub-workflow>
<ok to="special-join"/>
<error to="kill"/>
</action>
<join name="special-join" to="end"/>
<action name="email-alert-fail">
<email xmlns="uri:oozie:email-action:0.1">
<to>${emailing_list}</to>
<subject>Oozie workflow Failed</subject>
<body>
</body>
</email>
<ok to="kill"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Map-Reduce Failed</message>
</kill>
<end name="end"/>
</workflow-app>
我想传递参数列表,例如source,input_path,output_path,凭证,这些参数不同于所有三个进程aa,bb,cc。如何将其传播到三个子工作流中的每一个?
感谢。
答案 0 :(得分:2)
您可以使用子工作流操作的configuration
标记并传递所需的参数。这是它的样子:(添加所有必需的属性)
<action name="aa">
<sub-workflow>
<app-path>${nN}/xyz/workflow.xml</app-path>
<propagate-configuration/>
<configuration>
<property>
<name>input_path</name>
<value>your_input_path</value>
</property>
</configuration>
</sub-workflow>
<ok to="special-join"/>
<error to="kill"/>
</action>