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

Apache nifi 具有多个输入的Nifi处理器,仅在接收到某些流文件后才会触发,apache-nifi,Apache Nifi,我从FTP接收tar文件,并在解压缩后将其保存到HDFS。我现在的管道是这样的 ListFTP->FetchFTP->unpacontent->PutHDFS 该tar包含10个文件,因此对于单个tar文件,将生成10个流文件。我的要求是在HDFS中存储3个特定文件后触发另一个作业。我应该使用哪个处理器,或者使用Nifi是否有其他解决此问题的方法?我已经使用RouteOnAttribute、Notify和Wait处理器完成了此操作。完整流程如下所述 ListFTP->FetchFTP->unpa

我从FTP接收tar文件,并在解压缩后将其保存到HDFS。我现在的管道是这样的

ListFTP->FetchFTP->unpacontent->PutHDFS


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

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

ListFTP->FetchFTP->unpacontent->PutHDFS->RouteOnAttribute->Notify->Wait->

  • RouteOnAttribute:使用以下命令将3个所需文件重新路由到单独的队列
${filename:equals('file1.tsv'):或(${filename:equals('file2.tsv')}):或(${filename:equals('file3.tsv')})

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

  • 通知:此处理器将等待所有3个文件被接收,然后触发流文件


你有什么问题?您想将文件合并为每批3个文件,还是可以将文件写入10个不同的文件,并且只想在3个特定文件写入HDFS后触发作业?我只想在3个特定文件写入HDFS后触发作业。