首页 > 解决方案 > 同步不/无法连接的 NiFi 进程组或流?

问题描述

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

例如。我有一个我想要的过程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 方式来做到这一点。对此的建议将不胜感激。谢谢。

标签: apache-nifi

解决方案


我不确定是什么要求阻止您将从 FTP 检索的文件直接写入所需的 HDFS 位置,或者如果这是“将n 个文件写入 HDFS 并以.文件名开头,然后在达到某个特定阈值时全部重命名“ 设想。

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

在这种情况下,您的流段不需要连接。您将拥有执行 FTP -> HDFS 写入GetFTP -> PutHDFS的“流段 A”(您也可以使用FetchHDFS)并移动它们(ListHDFS -> MoveHDFS)。处理器将ListHDFS持续运行,但如果它在运行期间未检测到任何新文件,它将简单地产生并执行无操作。一旦PutHDFS处理器完成将文件写入 HDFS 文件系统的任务,在下一次ListHDFS执行时,它将检测该文件并生成描述它的流文件。

您可以根据自己的喜好调整调度,但通常这是 NiFi 流程中非常常见的模式。


推荐阅读