将可选属性从主oozie工作流传递到子工作流



我有一个HDFS_file_path或属性,需要从workflow-1传递到common_subworkflow。

我还有workflow 2,它没有该属性或HDFS_file_path。但是workflow 2调用common_subworkflow。

在common_subworkflow中,我使用${HDFS_file_path}获取属性值。

当工作流1调用common_subworkflow时,它工作正常,但当工作流2调用common_ssubworkflow时失败,因为工作流2中不存在HDFS_file_path。

有去的路吗

  1. 读取动态属性(如果存在(,或者如果变量不存在,则设置一些默认值(null或空(
<workflow-app name='hello-wf' xmlns="uri:oozie:workflow:0.4">
<parameters>
<property>
<name>inputDir</name>
</property>
<property>
<name>outputDir</name>
<value>out-dir</value>
</property>
</parameters>
...
<action name='firstjob'>
<map-reduce>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.mapper.class</name>
<value>com.foo.FirstMapper</value>
</property>
<property>
<name>mapred.reducer.class</name>
<value>com.foo.FirstReducer</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>${inputDir}</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>${outputDir}</value>
</property>
</configuration>
</map-reduce>
<ok to='secondjob'/>
<error to='killcleanup'/>
</action>
...
</workflow-app>

在上面的例子中,如果没有指定inputDir,Oozie将打印一条错误消息,而不是提交作业。如果未指定=outputDir=,Oozie将使用默认值out-dir。

取自https://oozie.apache.org/docs/3.3.1/WorkflowFunctionalSpec.html#a4.1_Workflow_Job_Properties_or_Parameters

最新更新