具有多个输入的Nifi处理器,仅在收到某些流文件后才触发

时间:2018-07-20 01:47:17

标签: apache-nifi

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

ListFTP-> FetchFTP-> UnpackContent-> PutHDFS

此tar包含10个文件,因此对于一个tar文件,将生成10个流文件。我的要求是在HDFS中存储3个特定文件后触发另一个作业。我应该使用哪个处理器,或者使用Nifi可以解决此问题吗?

1 个答案:

答案 0 :(得分:0)

我已经使用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个文件为止,之后将触发流文件。