【问题标题】:Nifi Processor with multiple inputs, triggers only after receiving certain flow files具有多个输入的 Nifi 处理器,仅在接收到某些流文件后触发
【发布时间】:2018-10-01 16:09:10
【问题描述】:

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

ListFTP -> FetchFTP -> UnpackContent -> PutHDFS

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

【问题讨论】:

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

标签: apache-nifi


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2016-11-13
    相关资源
    最近更新 更多