apache-nifi - 具有多个输入的 Nifi 处理器,仅在接收到某些流文件后触发
问题描述
我正在从 FTP 接收 tar 文件,并在解压后将其保存到 HDFS。所以我目前的管道看起来像这样。
ListFTP -> FetchFTP -> UnpackContent -> PutHDFS
此 tar 包含 10 个文件,因此对于单个 tar 文件,会生成 10 个流文件。我的要求是在 HDFS 中存储 3 个特定文件后触发另一个作业。我应该使用哪个处理器,或者是否有任何其他方法可以使用 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 个文件,然后触发流文件。
推荐阅读
- google-cloud-platform - 支持 Google Dataflow 的最佳 Apache Beam 语言是什么?
- python - 如何将图像嵌入到电子邮件中?
- api - Power BI API 电源查询
- python - 如果文件存在且已打开,则将 Pandas DataFrame 导出到 CSV 失败
- javascript - 什么时候应该使用 axios 进行异步调用,什么时候只使用 useEffect?
- windows - 是否可以禁用/控制 TFS 用户(本地)在 TFS 项目下创建新文件夹?
- netbeans - Netbeans 12.1 未在 C 标头上正确应用代码帮助
- javascript - 如何在另一个组件 useEffect 中设置状态?
- bash - Shell one-liner:如何在“&&”之前执行命令?
- pine-script - 标记每天的最高点(在 24 小时内仅标记最高柱)