【发布时间】:2017-01-30 09:32:12
【问题描述】:
我创建了 3 个进程组。我希望在第一个进程组完成后执行第二个进程组,在第二个进程组完成后执行第三个进程组。
请问有什么解决办法吗?
【问题讨论】:
标签: hadoop apache-nifi hdf
我创建了 3 个进程组。我希望在第一个进程组完成后执行第二个进程组,在第二个进程组完成后执行第三个进程组。
请问有什么解决办法吗?
【问题讨论】:
标签: hadoop apache-nifi hdf
最佳做法是将“Wait”和“Notify”处理器配对在一起,以便在其他流发送 Notify 事件之前,不会释放任何具有严格等待条件的流。
在您的示例中,“进程组 1”将负责发送通知消息,而“进程组 2 和 3”将各自具有相应的等待处理器,这些处理器基本上循环,直到第一个进程组发送它已完成的通知。
【讨论】:
Apache NiFi 是围绕连续流假设设计的。使连续流适应作业调度可能会很尴尬和困难,因为它取决于您提供一个进程组何时“完成”的定义。 NiFi 本身没有进程组的概念,它永远不会完成,只会停止或运行。您可能可以做一些事情:
所有这些都归结为同一个问题 - 你怎么知道上一组“完成”了?
【讨论】:
每个进程组都有与其他进程组连接的关系。
尝试将关系从第一个进程组拖到第二个进程组,从第二个进程组拖到第三个进程组。
它要求您在第一个进程组中创建输出端口以连接第二个处理器的输入端口。如果您不想在第二个进程组中使用第一个进程组的输出,那么只需在第二个进程组中使用“putFile”处理器将其写入某个目录,并为我们的第二个进程组创建一个独立的流程。
试试这个,如果我能找到其他方法,我会告诉你。
【讨论】: