Oozie协调员的数据集延迟

时间:2015-05-19 13:52:06

标签: hadoop hdfs bigdata oozie

希望根据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,但协调器永远不会构建。

有什么建议吗?

1 个答案:

答案 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。