在旧数据集上启动oozie协调器

时间:2013-06-14 13:47:05

标签: hadoop scheduling oozie oozie-coordinator

如何在我昨天的数据集输入可用之后安排oozie协调员运行今天的实例。它必须只检查一个必须是旧数据集的输入数据集,类似于1天前或2天前的数据集。它不必等待今天的数据集输入。

我尝试使用类似下面的内容,这里我在实例标记中使用了$ {coord:current(-1)},以便它可以检查昨天的数据,但这似乎不起作用。即使信号在昨天的日期不可用,工作也会在标称时间被解雇。

    <coordinator-app name="hello-coord" frequency="${coord:days(1)}"
              start="2009-01-02T08:00Z" end="2009-01-04T08:00Z" timezone="America/Los_Angeles"
             xmlns="uri:oozie:coordinator:0.1">
   <datasets>
   <dataset name="din" frequency="${coord:days(1)}"
            initial-instance="2009-01-02T08:00Z" timezone="America/Los_Angeles">
     <uri-template>${baseFsURI}/${YEAR}/${MONTH}/${DAY}</uri-template>
     <done-flag>_SUCCESS</done-flag>
    </dataset>
    </datasets>
  <input-events>
     <data-in name="input" dataset="din">
            <instance>${coord:current(-1)}</instance>
     </data-in>
  </input-events>
  <action>
  <workflow>
      <app-path>${wf_app_path}</app-path>
  </workflow>
  </action>

1 个答案:

答案 0 :(得分:1)

<dataset>标记用于设置触发文件出现的文件夹。

<input-events>代码提供计算${YEAR}${MONTH}${DAY}等文件夹参数的时间。

<instance>${coord:current(-1)}</instance>表示给定的时间是-1天。

因此,在第一天,即在<dataset>"2009-01-01T08:00Z"的时间是initial-instance="2009-01-02T08:00Z",早于{{1} }}。执行intial-instance之前的所有操作都不会等待触发器文件出现。

解决方案是更改initial-instance="2009-01-01T08:00Z"