希望根据Hive分区中的数据集的可用性运行作业。我已经让这个工作,但现在我希望它运行,所有我的饲料在标称时间运行,但一个将总是在延迟一天运行。因此,如果今天是5-19,那么除了一个之外,所有的饲料需要在5到19之间,我们将需要5-18个。
这就是我目前所拥有的:
<dataset name="mvHost" frequency="${coord:days(1)}" initial-instance="${jobStart}" timezone="America/New_York">
<uri-template>${nameNode}/apps/hive/warehouse/uat_db.db/mv_host/create_date=${YEAR}${MONTH}${DAY}</uri-template>
<done-flag></done-flag>
</dataset>
<!-- ensure MV_INTERFACE exists on partition date, need to delay by ONE day -->
<dataset name="mvInterface" frequency="${coord:days(1)}" initial-instance="${jobStart}" timezone="America/New_York">
<uri-template>${nameNode}/apps/hive/warehouse/uat_db.db/mv_interface/create_date=${YEAR}${MONTH}${DAY}</uri-template>
<done-flag></done-flag>
</dataset>
</datasets>
<input-events>
<data-in name="input1" dataset="mvHost">
<instance>${coord:current(0)}</instance>
</data-in>
<data-in name="input2" dataset="mvInterface">
<instance>${coord:current(0)}</instance>
</data-in>
</input-events>
灌输延迟的最佳方法是什么?我已经尝试将实例编辑为$ {coord:current(-24)}但是失败了。另外,我尝试在MV_INTERFACE的初始实例上使用coord:dateOffset,但协调器永远不会构建。
有什么建议吗?
答案 0 :(得分:0)
我认为您需要${coord:offset(n, String timeUnit)}。 它可以在任何使用$ {coord:current(n)}的地方使用,但允许您在数据集实现时指定时间偏移(正数和负数)。 所以,举个例子:
<datasets>
<dataset name="mvHost" frequency="${coord:days(1)}" initial-instance="${jobStart}" timezone="America/New_York">
<uri-template>${nameNode}/apps/hive/warehouse/uat_db.db/mv_host/create_date=${YEAR}${MONTH}${DAY}</uri-template>
<done-flag></done-flag>
</dataset>
<!-- ensure MV_INTERFACE exists on partition date, need to delay by ONE day -->
<dataset name="mvInterface" frequency="${coord:days(1)}" initial-instance="${jobStart}" timezone="America/New_York">
<uri-template>${nameNode}/apps/hive/warehouse/uat_db.db/mv_interface/create_date=${YEAR}${MONTH}${DAY}</uri-template>
<done-flag></done-flag>
</dataset>
</datasets>
<input-events>
<data-in name="input1" dataset="mvHost">
<instance>${coord:current(0)}</instance>
</data-in>
<data-in name="input2" dataset="mvInterface">
<instance>${coord:offset(-1, "DAY")}</instance>
</data-in>
</input-events>
如果2016-01-01T00:00是协调员实现时间,那么 数据集&#34; mvHost&#34;具体化时间(相同)2016-01-01T00:00, 数据集&#34; mvInterface&#34;将于2015-12-31T00:00。