使用 Oozie 执行协调器操作的输入条件

Posted

技术标签:

【中文标题】使用 Oozie 执行协调器操作的输入条件【英文标题】:Input conditions to execute coordinator action using Oozie 【发布时间】:2019-09-25 13:45:44 【问题描述】:

我是 oozie 的新手。我想将我的协调器配置为仅在我的输入文件夹中出现四个文件时才执行。我对 oozie 文档进行了一些搜索,发现我可以将 Input-event 与数据集一起使用。

  <datasets>
    <dataset name="dinput" frequency="$coord:days(1)"
             initial-instance="$start_date" timezone="UTC">
      <uri-template>myInputFolder</uri-template>
      <done-flag></done-flag>
    </dataset>
  </datasets>
  <input-events>
    <data-in name="input" dataset="dinput">
      <instance>$coord:current(0)</instance>
    </data-in>
  </input-events> 

有人可以指导我这样做吗?

【问题讨论】:

【参考方案1】:

Oozie 的&lt;dataset&gt;&lt;input-events&gt; 标记的目的是处理数据以特定间隔进入并落在日期分区目录结构中的常见情况。这就是 Oozie 工作得最好的地方。

如果这不适合您的用例,我的建议是编写一些代码来检查您的文件并使用 shell 或 java 操作类型在 Oozie 操作中运行它。我认为如果您的文件不存在,此操作可能会向 Oozie 发送失败代码以停止工作流,并且此操作将先于您的工作流的真正逻辑。

【讨论】:

感谢您的回复。我正在编写一个脚本来计算 HDFS 输入目录中的文件。如何在工作流 ssh 操作中获取此脚本的输出。如果我的输入目录中的文件少于四个,我需要调用发送邮件操作...你能指导我这样做吗? 您应该查找&lt;capture-output&gt; 元素。使用它,您可以从您的 ssh 操作中捕获一个值,并在您的后续电子邮件操作中将其与 Oozie 表达式语言一起使用。 如果您要经常使用 Oozie,我建议您查找由 O'Reilly Media 出版的 Mohammad Kamrul Islam 和 Aravind Srinivasan 所著的《Apache Oozie》一书。

以上是关于使用 Oozie 执行协调器操作的输入条件的主要内容,如果未能解决你的问题,请参考以下文章

Oozie Sqoop 作业 - 无法恢复作业

oozie coordinator 定时调度

Oozie 工作流配置单元操作卡在 RUNNING 中

Oozie 协调器配置属性

杀死协调员后如何让 oozie 工作流程运行?

oozie 怎么知道我是谁?