我正在从FTP接收tar文件,并将其解压缩后保存到HDFS。所以我当前的管道看起来像这样。
ListFTP-> FetchFTP-> UnpackContent-> PutHDFS
此tar包含10个文件,因此对于一个tar文件,将生成10个流文件。我的要求是在HDFS中存储3个特定文件后触发另一个作业。我应该使用哪个处理器,或者使用Nifi可以解决此问题吗?
答案 0 :(得分:0)
我已经使用RouteOnAttribute,Notify和Wait处理器完成了它。完整的流程如下所述。
ListFTP-> FetchFTP-> UnpackContent-> PutHDFS-> RouteOnAttribute->通知->等待->
$ {filename:equals('file1.tsv'):or($ {filename:equals('file2.tsv')}):or($ {filename:equals('file3.tsv')})}}
通知::用于通知已接收到特定文件。将信号计数器名称设置为$ {filename}。
通知::该处理器将等待,直到接收到所有3个文件为止,之后将触发流文件。