首页 > 解决方案 > 具有多个输入的 Nifi 处理器,仅在接收到某些流文件后触发

问题描述

我正在从 FTP 接收 tar 文件,并在解压后将其保存到 HDFS。所以我目前的管道看起来像这样。

ListFTP -> FetchFTP -> UnpackContent -> PutHDFS

此 tar 包含 10 个文件,因此对于单个 tar 文件,会生成 10 个流文件。我的要求是在 HDFS 中存储 3 个特定文件后触发另一个作业。我应该使用哪个处理器,或者是否有任何其他方法可以使用 Nifi 来解决这个问题?

标签: apache-nifi

解决方案


我已经使用 RouteOnAttribute、Notify 和 Wait 处理器完成了它。完整的流程如下所述。

ListFTP -> FetchFTP -> UnpackContent -> PutHDFS -> RouteOnAttribute -> 通知 -> 等待 ->

  • RouteOnAttribute:使用以下命令将 3 个所需文件重新路由到单独的队列。

${filename:equals('file1.tsv'):or(${filename:equals('file2.tsv')}):or(${filename:equals('file3.tsv')})}

  • 通知:这用于通知接收到特定文件。将信号计数器名称设置为 ${filename}。

  • 通知:该处理器将等到收到所有 3 个文件,然后触发流文件。


推荐阅读