这正是 Oozie 旨在解决的用例。Oozie 将在启动前等待所有数据依赖项。
请尝试理解 coordinator.xml 中的以下配置
<datasets>
<dataset name="my_data" frequency="${coord:days(1)}" initial-instance="2013-01-27T00:00Z">
<uri-template>YOUR_DATA/${YEAR}${MONTH}${DAY}</uri-template>
</dataset>
...
<datasets>
<input-events>
<data-in name="my_data" dataset="my_data">
<instance>${coord:current(-1)}</instance>
</data-in>
</input-events>
<output-events>
<data-out name="my_data" dataset="my_data">
<instance>${coord:current(0)}</instance>
</data-out>
</output-events>
input-events 中的“coord:current(-1)”表示先前的输出。它将数据集 URI teamplate 解释为“昨天”,Oozie 将通过检查成功标志来检查数据是否存在于 HDFS 中,默认情况下,成功标志是一个名为“_SUCCESS”的空文件,位于输出目录下。Oozie 将在启动当前工作流之前一直等待这个标志。
顺便说一句,你也可以设置
<coordinator-app name="my_coordinator" frequency="${coord:days(1)}" start="${start_time}" end="${end_time}" ...>
定义协调器作业的开始时间和结束时间,以便您可以赶上积压数据。