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

gzszwxb4  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(413)

如何安排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>
hts6caw3

hts6caw31#

这个 <dataset> 标记用于设置触发器文件将出现在其中的文件夹。
这个 <input-events> 标记提供文件夹参数 ${YEAR} , ${MONTH} 以及 ${DAY} 是经过计算的。 <instance>${coord:current(-1)}</instance> 表示给定的时间为-1天。
因此在第一天,即“2009-01-02t08:00z”,给出的时间 <dataset>"2009-01-01T08:00Z" 这比 initial-instance="2009-01-02T08:00Z" . 在初始示例之前的所有操作都将在不等待触发器文件出现的情况下执行。
解决办法是改变 initial-instance="2009-01-01T08:00Z"

相关问题