寻求适配NiFi JoltTransformJSON的JSON转换JOLT规范编写方案
JOLT转换方案实现说明
可行性结论
该需求可以通过JOLT规范完全实现,无需额外组件。
可用JOLT规范
你可以直接使用如下chain模式的JOLT规范完成转换:
[ { "operation": "shift", "spec": { "*": { "Header": { "TeamCD": { "$": "[#2].Field", "#20": "[#2].Type", "@": "[#2].Value", "#Vendor1": "[#2].Vendor" } }, "Player": { "*": { "PlayerNumber": { "$": "[#4].Field", "#23": "[#4].Type", "@": "[#4].Value", "#Vendor1": "[#4].Vendor" }, "ShortName": { "$": "[#4].Field", "#24": "[#4].Type", "@": "[#4].Value", "#Vendor1": "[#4].Vendor" } } } } } }, { "operation": "shift", "spec": { "*": { "*": { "@": "" } } } } ]
NiFi配置说明
在JoltTransformJSON处理器中,做如下配置即可:
Jolt Transformation DSL选择ChainJolt Specification填入上述规范即可直接完成转换
替代解决方案(不使用JOLT的场景)
如果后续规则复杂度提升,JOLT难以实现时,可以选择如下NiFi原生方案:
- 使用
ExecuteScript处理器:选择Groovy、Python等支持JSON操作的脚本语言,直接解析输入JSON手动拼装目标结构,灵活性最高,适合规则多变的场景 - 使用
ConvertRecord系列组件:搭配JsonTreeReader和JsonRecordSetWriter,通过定义Avro Schema做字段映射转换,适合大批量高吞吐的处理场景 - 不推荐使用
ReplaceText等字符串处理类处理器拼接JSON,出错概率高且维护性差
内容的提问来源于stack exchange,提问作者emerson
相关产品推荐
相关产品推荐

