同步NiFi流程组或不能/无法连接的流程?

时间:2018-05-04 18:26:25

标签: apache-nifi

与问题状态一样,是否有某种方法可以同步在UI中无法连接的NiFi流程组或管道?

EG。我有一个流程,我希望getFTP->putHDFS->moveHDFS(最终实际上是getFTP->putHDFS->listHDFS->moveHDFS,请参阅https://stackoverflow.com/a/50166151/8236733)。但是,listHDFS似乎不接受任何传入连接。尝试对P1{getFTP->putHDFS->outport}->P2{inport->listHDFS->moveHDFS}等进程组执行某些操作也会遇到同样的问题(listHDFS似乎无法接收任何传入连接。在我们从moveHDFS获取任何内容之前,我们不想getFTP,但鉴于上述情况,我不知道如何以正确的顺序同步这些操作

NiFi的新手,但我想这是一个常见的用例,必须有一些NiFi-ish方式来做到这一点,我不知道。对此的建议将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

我不确定是什么要求阻止您将从FTP检索到的文件直接写入所需的HDFS位置,或者如果这是<34;将 n 文件写入HDFS使用.启动文件名,然后在达到某个特定阈值时重命名为&#34;场景。

ListHDFS不接受任何传入关系,因为它不应由传入事件触发,而是由计时器/ CRON计划触发。每次运行时,它都会生成 n 流文件,其中每个文件都引用自上次执行以来检测到要写入文件系统的HDFS文件。为此,处理器存储本地状态。

在这种情况下,您的流程段不需要连接。您将拥有&#34;流程段A&#34;执行FTP - &gt; HDFS写作(GetFTP -> PutHDFS),你将拥有一个独立的&#34;流程段B&#34;列出HDFS目录,读取文件描述符(但不是文件的内容,除非你也使用FetchHDFS)并移动它们(ListHDFS -> MoveHDFS)。 ListHDFS处理器将持续运行,但如果它在运行期间没有检测到任何新文件,它将简单地产生并执行无操作。一旦PutHDFS处理器完成将文件写入HDFS文件系统的任务,在下一次ListHDFS执行时,它将检测该文件并生成描述该文件的流文件。

您可以根据自己的喜好调整计划,但一般来说,这是NiFi流程中非常常见的模式。