apache nifi - 如何一个接一个地执行进程组

时间:2017-01-30 09:32:13

标签: hadoop apache-nifi hdf

我创建了3个进程组。我想在第一个进程组完成后执行第二个进程组,在第二个进程组完成后执行第三个进程组。

对此有任何解决方案吗?

3 个答案:

答案 0 :(得分:3)

我相信最好的做法是将“等待”和“通知”处理器配对在一起,这样只有在其他流发送了Notify事件后,才会释放具有严格等待条件的流。

在您的示例中,“进程组1”可能负责发送Notify消息,而“进程组2和3”将分别具有相应的“等待”处理器,这些处理器实际上一直循环到第一个进程组发送完成通知为止。 / p>

答案 1 :(得分:2)

Apache NiFi是围绕连续流量假设设计的。使连续流适应作业调度可能很困难,因为它取决于您为进程组“完成”提供定义。 NiFi本身没有任何过程组的概念,只是停止或运行。您可以做一些事情:

  • 将每个进程组的输出合并到传递给下一个进程组的单个流文件(例如,使用MergeContent)。
  • 使用CRON计划在每个组的条目处安排处理器,具体取决于同步流的时间。
  • 构建一个自定义处理器(或ExecuteScript),用于轮询上一个进程组的已完成条件。

所有这些都归结为同样的问题 - 你怎么知道前一组是“完成”?

答案 2 :(得分:2)

每个流程组都有与其他流程组连接的关系。

尝试将关系从第一个进程组拖到第二个进程组,从第二个进程组拖到第三个进程组。

它要求您在第一个进程组中创建输出端口以与第二个处理器的输入端口连接。如果您不想在第二个进程组中使用第一进程组的输出,那么只需使用' putFile'将其写入某个目录。第二个进程组中的处理器,并为我们的第二个进程组创建一个独立的流程。

尝试使用此功能,如果能找到其他方法,我会告诉您。