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

标签 hadoop scheduling oozie oozie-coordinator

只有在昨天的数据集输入可用后,才能安排Oozie协调器运行今天的实例。它仅需要检查一个输入数据集,该输入数据集必须是旧数据集,例如1天前或2天前的数据集。不必等待今天的数据集输入。

我尝试使用下面的方法,在这里我在instance标记内使用了$ {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>

最佳答案

<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"

关于hadoop - 在旧数据集上启动oozie协调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17109997/

相关文章:

java - 如何使用 oozie 协调器延迟工作流操作

hadoop - 错误 : E0902: Exception occured: [User: Root is not allowed to impersonate root

java - Hadoop 作业调度以及 0.20.203 中映射器较慢的作业

利润最大化算法 : ways to solve/approach?(高级 NP-Complete)

java - Java 中的上下文切换

java - Java代码或Oozie

java - 如何将 Hadoop MapReduce 作业实现为非 Map/Reduce,即使没有任何意义?

python - 如何在pySpark中从字符串数据框中有效替换多个正则表达式模式的所有实例?

performance - spark.sql.shuffle.partitions 和 spark.default.parallelism 有什么区别?

java - Quartz 调度程序的行为不一致