如何用Apache NiFi处理器实现FlowFile ID匹配与汇总报告生成?
实现指定匹配与汇总需求的Apache NiFi处理器推荐
需求说明
目标:生成包含所有匹配FlowFile信息的指定JSON格式文件,示例格式如下:
{ "matched": [ { "id": "${uuid}", "fileName": "${filename}" } ] }逻辑:以一个包含若干ID的FlowFile作为参考库,后续每个进入的FlowFile需检查自身ID是否存在于参考库中;匹配成功时,为该FlowFile构造上述JSON结构,并追加到同一个汇总报告FlowFile中。
可用处理器及用法
- LookupRecord:ID匹配的核心处理器。先将参考ID FlowFile加载为Lookup服务(比如
SimpleKeyValueLookupService),后续FlowFile进入时,通过该处理器检查自身ID是否在参考库内,匹配成功的FlowFile会被路由到指定分支。 - ReplaceText/UpdateRecord:用来构造符合要求的JSON结构。用ReplaceText可以直接把FlowFile内容替换为目标格式,将
${uuid}和${filename}替换为对应FlowFile的属性值;如果需要更灵活的字段映射,用UpdateRecord生成标准JSON对象更合适。 - MergeContent:负责汇总匹配成功的JSON片段。可配置为
JSON Array合并格式,把单个的{"id":"xxx","fileName":"xxx"}对象合并到matched数组中;也可以先将每个匹配的JSON输出为单行,再通过MergeContent拼接成完整的汇总JSON文件。 - DistributedMapCacheClientPut + DistributedMapCacheClientLookup:适合分布式NiFi集群场景。先用
DistributedMapCacheClientPut把参考ID存入分布式缓存(如Redis),后续FlowFile通过DistributedMapCacheClientLookup查询ID是否存在,实现跨节点的ID匹配。 - RouteOnAttribute:配合LookupRecord使用,将匹配成功和失败的FlowFile分流,只对匹配成功的FlowFile进行后续JSON构造与汇总操作。
简易流程参考
- 解析参考ID FlowFile,提取ID列表并加载到Lookup服务或分布式缓存;
- 后续FlowFile进入后,通过Lookup类处理器完成ID匹配;
- 匹配成功的FlowFile通过ReplaceText/UpdateRecord生成指定格式的JSON对象;
- 用MergeContent将所有匹配的JSON对象汇总成目标格式的FlowFile。
内容的提问来源于stack exchange,提问作者edjm
相关产品推荐
相关产品推荐

