使用Apache NiFi我想基于两个其他字段的串联为JSON流文件中的所有元素添加一个新字段 . 我正在尝试使用 JoltTransformJSON
处理器,但是,我想使用的Jolt变换可以正常使用在线tools但在NiFi中不起作用 . 我怀疑版本问题,但我的Jolt规范可能有些愚蠢 .
输入JSON看起来像这样......
[
{
"id": 485842,
"cc": 1,
"x": 0,
"y": null
},
{
"id": 281733,
"cc": 1,
"x": 0,
"y": 10
},
{
"id": 721412,
"cc": 12,
"x": 0,
"y": null
}
]
我想要的输出是......
[ {
"id" : 485842,
"cc" : 1,
"x" : 0,
"y" : null,
"id_cc" : "485842_1"
}, {
"id" : 281733,
"cc" : 1,
"x" : 0,
"y" : 10,
"id_cc" : "281733_1"
}, {
"id" : 721412,
"cc" : 12,
"x" : 0,
"y" : null,
"id_cc" : "721412_12"
} ]
我在网上使用的Jolt变换site是......
[{
"operation": "modify-default-beta",
"spec": {
"*": {
"id_cc": "=concat(@(1,id),'_',@(1,cc))"
}
}
}]
在NiFi中,我将 JoltTransformJSON
处理器配置为 Modify-Default
并使用这个略微修改的Jolt规范...
{
"operation": "modify-default",
"spec": {
"*": {
"id_cc": "=concat(@(1,id),'_',@(1,cc))"
}
}
}
NiFi验证了这一点,并且该过程运行 . 输出JSON仅包含一个记录,并且添加了一个新字段
"operation": "modify-default"
是否可以快速修复将解决此问题的修改默认操作,还是使用移位操作更简单?
提前感谢任何指针 .
1 回答
经过同事的一些帮助,我找到了一种方法来完成这项工作 .
首先,将
JoltTransformJSON
处理器的Jolt Transformation DSL
属性设置为Chain
.其次,将Jolt规范设置为以下...
[]
和操作中的beta
一样至关重要 .第三,确保输入Jolt处理器的JSON是一个阵列 .
得到所有这些正确的,将产生预期的输出 .