如何使用火花协调员获得每小时预定火花作业的特定小时数

时间:2017-12-22 12:31:50

标签: hadoop apache-spark oozie oozie-coordinator oozie-workflow

我花了一天时间找到为什么我的协调员没有按预期工作,仍然没有得到任何线索。

我希望分别运行2个火花工作,第二个工作是第一份工作的家属。我已完成第一份每小时生成_SUCCESS个文件的工作。问题是当第二个工作找到它的依赖时,它得到了错误的HOUR。它总是在执行时获取00而不是小时。

这是第二个作业依赖项的xml部分示例

<datasets>
<dataset name="\first_job" frequency="${coord:days(1)}" initial-instance="2015-01-01T00:00Z" timezone="GMT">
  <uri-template>hdfs://nameservice1/user/user/project/first_job/success/${YEAR}${MONTH}${DAY}/${HOUR}</uri-template>
  <done-flag>_SUCCESS</done-flag>
</dataset>

这是一些日志

::CoordActionInputCheck:: Missing deps:hdfs://nameservice1/user/user/project/first_job/success/20171222/00/_SUCCESS 

请告诉我我做错了什么或我错过了什么。

由于

1 个答案:

答案 0 :(得分:0)

您已将频率设置为frequency="${coord:days(1)}",这意味着您的oozie协调员只需在00小时触发一次作业,这就是为什么它总是在寻找00小时的当天开始时间从你的初始实例。 使用hours EL功能

frequency="${coord:hours(1)}" 

指示协调员每小时检查一次。

此外,初始实例设置为initial-instance="2015-01-01T00:00Z"且频率为1天,因此它将增加1天,但小时数将相同00:00Z。更改此时间以选择特定时间。