如何配置Nifi MergeContent按相同TracingNo属性值合并JSON文件
按TracingNo合并同编号JSON文件的NiFi流程调整方案
问题核心原因
你当前流程没有达到预期效果,核心是MergeContent没有配置按TracingNo属性分组合并的规则,调整配置即可实现需求。
具体调整步骤
第一步:确认
UpdateAttribute配置正确
先验证所有解压后的JSON文件都成功提取到了非空的TracingNo属性,可在UpdateAttribute后接入LogAttribute组件临时调试,确保编号提取逻辑没有异常。如果后续需要区分文件类型,可额外新增一个fileType属性,从文件名提取header/content标记。第二步:修改
MergeContent核心配置
这一步是实现按编号合并的关键,调整以下配置项:- 「Merge Strategy」选择
Bin-Packing Algorithm - 「Correlation Attribute Name」填写
TracingNo,NiFi会自动将相同TracingNo值的FlowFile分到同一个合并分组 - 「Minimum Number of Entries」如果每个编号固定对应2个JSON文件(header+content)就填
2,数量不固定可填1 - 「Maximum Number of Entries」对应单个编号关联的最大文件数,固定2个的场景填
2即可 - 如果需要输出合法的JSON数组,补充如下配置:
- 「Delimiter Strategy」选择
Text - 「Header」填写
[ - 「Footer」填写
] - 「Demarcator」填写
,
- 「Delimiter Strategy」选择
- 「Merge Strategy」选择
第三步:可选后置处理
如果需要把header和content的字段合并为单个JSON对象而非数组,可在MergeContent后新增JoltTransformJSON组件,配置转换规则完成字段合并;也可新增UpdateAttribute组件,将输出文件名设置为${TracingNo}-merged.json方便后续识别。
内容的提问来源于stack exchange,提问作者Mohammadreza Khedri
相关产品推荐
相关产品推荐

