如何安排oozie协调器仅在昨天的数据集输入可用之后运行今天的示例。它只需要检查一个输入数据集,它必须是一个旧数据集,比如1天前或2天前的数据集。它不必等待今天的数据集输入。
我试过用下面这样的东西,这里我用过${coord:current(-1)}内的示例标记,以便它可以检查昨天的数据,但这似乎不起作用。即使昨天没有信号,工作也会在正常时间被解雇。
<coordinator-app name="hello-coord" frequency="${coord:days(1)}"
start="2009-01-02T08:00Z" end="2009-01-04T08:00Z" timezone="America/Los_Angeles"
xmlns="uri:oozie:coordinator:0.1">
<datasets>
<dataset name="din" frequency="${coord:days(1)}"
initial-instance="2009-01-02T08:00Z" timezone="America/Los_Angeles">
<uri-template>${baseFsURI}/${YEAR}/${MONTH}/${DAY}</uri-template>
<done-flag>_SUCCESS</done-flag>
</dataset>
</datasets>
<input-events>
<data-in name="input" dataset="din">
<instance>${coord:current(-1)}</instance>
</data-in>
</input-events>
<action>
<workflow>
<app-path>${wf_app_path}</app-path>
</workflow>
</action>
1条答案
按热度按时间hts6caw31#
这个
<dataset>
标记用于设置触发器文件将出现在其中的文件夹。这个
<input-events>
标记提供文件夹参数${YEAR}
,${MONTH}
以及${DAY}
是经过计算的。<instance>${coord:current(-1)}</instance>
表示给定的时间为-1天。因此在第一天,即“2009-01-02t08:00z”,给出的时间
<dataset>
是"2009-01-01T08:00Z"
这比initial-instance="2009-01-02T08:00Z"
. 在初始示例之前的所有操作都将在不等待触发器文件出现的情况下执行。解决办法是改变
initial-instance="2009-01-01T08:00Z"