Oozie Coordinator 中数据集的延迟

Posted

技术标签:

【中文标题】Oozie Coordinator 中数据集的延迟【英文标题】:Latency for Dataset in Oozie 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 ,但协调器永远不会构建。

有什么建议吗?

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于Oozie Coordinator 中数据集的延迟的主要内容,如果未能解决你的问题,请参考以下文章

Oozie-coordinator调度

oozie coordinator 定时调度

Oozie coordinator 作业自定义的配置的一些方法

问题记录CDH版Hue提交Oozie Coordinator调度报500异常

问题记录CDH版Hue提交Oozie Coordinator调度报500异常

oozie bundle 调用多个coordinator