我有一个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函数,最好的方法是什么,我基本上对协调器触发的这个工作流失败的自动化感兴趣。请以最小的变化建议最佳方式。
答案 0 :(得分:1)
您可以使用-D
oozie job -oozie <oozie URL> -config <configFile> -Dnameofproperty=value -submit
您可以在工作流程中使用String wf:conf(String name)
功能来检索值
答案 1 :(得分:1)
您需要在coordinator.xml中定义协调器EL函数/属性,并在workflow.xml中调用该属性:
<强>协调员强>
<action>
<workflow>
<app-path>${workflowPath}</app-path>
<configuration>
<property>
<name>nominalTime</name>
<value>${coord:nominalTime()}</value>
</property>
</configuration>
</workflow>
</action>
工作流程(Hive示例)
<param>date=${nominalTime}</param>
答案 2 :(得分:0)
您确定可以在配置文件中使用oozie表达式吗?
当我需要手动运行工作流程时,我在配置文件中定义一个属性并将该工作流程提交给oozie。
configuration.properties:
filename3=/user/john/data.tsv
workflow.xml:
...
<property>
<name>filename3</name>
<value>${filename3}</value>
</property>
...
然后运行此工作流程:
oozie -config configuration.properties -run