我们希望根据数据可用性来安排工作流,但没有特定的数据到达频率。此外,可能会有多个数据的重新运行,因此当天数据的多个版本随时会到达。
据我从规范中了解,目前在协调器中指定频率参数是强制性的。
然而,我们希望仅基于某些事件(数据到达或分区创建)来触发我们的工作流,而不依赖于频率。
看起来这符合异步数据集的要求。Oozie还支持异步数据集吗?
发布于 2015-04-28 18:40:24
频率参数是必需的,但您可以指定一个输入事件,如下所示:
<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>
https://oozie.apache.org/docs/3.1.3-incubating/CoordinatorFunctionalSpec.html#a6.1.4._Input_Events
因此,定义一个相对较低的频率和一个有意义的单位,它将等待数据可用性。可能为协调器指定一个超时是有意义的,它小于频率:
<timeout>[TIME_PERIOD]</timeout>
或者你可以直接协调(启动)你的工作流程(没有协调器),例如: cronjob,但这一点也不好。
https://stackoverflow.com/questions/28136879
复制相似问题