oozie:如何在相应的工作流中使用oozie协调器属性?

6yt4nkrj  于 2021-06-04  发布在  Hadoop
关注(0)|答案(3)|浏览(331)

我有一个作为协调器运行的oozie作业,它调用一个worflow,在协调器中有一些使用协调器el函数的配置属性,比如-
${oozieappdir}/copylogs.wf.xml

<configuration>
       <property>
           <name>filename3</name>
           <value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), -3, 'HOUR'), 'MM')}-${coord:formatTime(coord:dateOffset(coord:nominalTime(), -3, 'HOUR'), 'dd')}-${coord:formatTime(coord:dateOffset(coord:nominalTime(), -3, 'HOUR'), 'yyyy')}-${coord:formatTime(coord:dateOffset(coord:nominalTime(), -3, 'HOUR'), 'HH')}</value>
       </property>

  </configuration>

当这个作业的一个示例被终止时,我想从命令行单独重新运行工作流,但是它给出了错误,因为它使用了在协调器中定义的属性,我不能在工作流中添加这些属性,因为它使用了协调器el函数,而且我没有找到相应的wf:el函数,做这件事的最佳方法是什么,我主要感兴趣的是自动处理由协调器触发的工作流故障。请建议最好的方式去做它与最小的变化。

af7jpaap

af7jpaap1#

您可以在提交期间使用将参数传递给工作流 -D ```
oozie job -oozie -config -Dnameofproperty=value -submit

你可以用 `String wf:conf(String name)` 函数来检索值
hvvq6cgz

hvvq6cgz2#

您确定可以在配置文件中使用oozie表达式吗?
当我需要手动运行工作流时,我在配置文件中定义了一个属性,并将该工作流提交给oozie。
配置.属性:

filename3=/user/john/data.tsv

工作流.xml:

...
<property>
  <name>filename3</name>
  <value>${filename3}</value>
</property>
...

然后运行此工作流:

oozie -config configuration.properties -run
5sxhfpxr

5sxhfpxr3#

您需要在coordinator.xml中定义coordinator el函数/属性,并在workflow.xml中调用该属性,如下所示:
协调员

<action>
      <workflow>
                <app-path>${workflowPath}</app-path>
        <configuration>
            <property>
                    <name>nominalTime</name>
                    <value>${coord:nominalTime()}</value>
            </property>
        </configuration>
      </workflow>
</action>

工作流(配置单元示例)

<param>date=${nominalTime}</param>

相关问题