【问题标题】:Latency for Dataset in Oozie CoordinatorOozie Coordinator 中数据集的延迟
【发布时间】:2015-05-19 13:52:06
【问题描述】:

希望有一个基于 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 ,但协调器永远不会构建。

有什么建议吗?

【问题讨论】:

    标签: hadoop hdfs bigdata oozie


    【解决方案1】:

    我认为你需要${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 是协调器实现时间,那么 数据集“mvHost”实现时间将(相同)2016-01-01T00:00, 数据集“mvInterface”将为 2015-12-31T00:00。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多