具有异步数据集的Oozie协调器

Vis*_*shi 5 oozie oozie-coordinator

我们希望根据数据可用性安排工作流程,但没有特定的数据到达频率。此外,可能会有多个数据重新运行,因此一天中的任何时间都有数据的多个版本。

从规范中可以了解到,目前必须在协调器中指定频率参数。

但是,我们只想根据某些事件(数据到达或分区创建)来触发我们的工作流,而不依赖于频率。

看来这符合异步数据集的条件。Oozie是否支持异步数据集?

kec*_*cso 0

频率参数是强制性的,但您可以指定输入事件,如下所示:

<datasets>
    <dataset name="mydata" frequency="${coord:days(1)}" initial-instance="${initial_instance}" timezone="UTC">
        <uri-template>${hcat_uri}/${hcatDatabase}/${hcatTable}/dt=${YEAR}${MONTH}${DAY}</uri-template>
    </dataset>
</datasets>
<input-events>
    <data-in name="MYDATA_IN" dataset="mydata">
        <instance>${coord:current(0)}</instance>
    </data-in>
</input-events>
Run Code Online (Sandbox Code Playgroud)

https://oozie.apache.org/docs/3.1.3-incubating/CoordinatorFunctionalSpec.html#a6.1.4._Input_Events

因此定义一个相对较低的频率和一个有意义的单位,它将等待数据可用。为协调器指定一个小于频率的超时可能是有意义的:

<timeout>[TIME_PERIOD]</timeout>
Run Code Online (Sandbox Code Playgroud)

或者您可以直接(无需协调器)使用 cronjob 来协调(启动)您的工作流程,但这一点都不好。