Apache nifi NiFi:QueryRecord使用ExecuteScript
我使用卡夫卡主题(Apache nifi NiFi:QueryRecord使用ExecuteScript,apache-nifi,Apache Nifi,我使用卡夫卡主题(嵌套json)中的数据,该主题必须根据字段值进行过滤。 因此,我使用ExecuteScript处理器过滤记录并转换一些字段。 对于过滤,我使用了findAll函数,而没有使用QueryRecord,它工作正常 我这里的问题是,这种方法是否解决了QueryRecord处理器用于过滤的相同目的 因为我不确定在传入流文件中存在嵌套json对象时如何使用查询记录 我尝试了queryrecord,但它抛出了一个错误: SELECT * FROM FLOWFILE WHERE RPATH(
嵌套json
)中的数据,该主题必须根据字段值进行过滤。
因此,我使用ExecuteScript处理器
过滤记录并转换一些字段。
对于过滤,我使用了findAll
函数,而没有使用QueryRecord,它工作正常
我这里的问题是,这种方法是否解决了QueryRecord处理器用于过滤的相同目的
因为我不确定在传入流文件中存在嵌套json对象时如何使用查询记录
我尝试了queryrecord,但它抛出了一个错误:
SELECT * FROM FLOWFILE WHERE RPATH(order, '/orderDetail/orderId') = '1126'
Error:
No match found for function signature RPATH(<JavaType(...Record)>,<CHARACTER>)
org.apache.calcite.runtime.CalciteContextException
Sample Data:
{
"retail":{
"retailId":"6133",
"retailName":"Maveric"
},
"order":{
"orderDetail":{
"orderId":"1126",
"orderName":"NNDRFG"
}
}
}
从流程文件中选择*,其中RPATH(order,'/orderDetail/orderId')='1126'
错误:
未找到函数签名RPATH(,)的匹配项
org.apache.calcite.runtime.CalciteContextException
样本数据:
{
“零售”:{
“零售ID”:“6133”,
“零售名称”:“Maveric”
},
“命令”:{
“orderDetail”:{
“订单ID”:“1126”,
“订单名称”:“NNDRFG”
}
}
}
RPATH\u字符串的语法不正确,它只是RPATH
请参阅QueryRecord的其他详细信息文档:
它有一个带有嵌套字段的JSON示例。Bryan,谢谢,仍然面临同样的问题。我已经用错误消息和ConsumerKafkaRecord处理器的数据更新了问题。您使用的是什么版本的NiFi?它的Apache NiFi 1.8.0RPATH添加在1.9.0:)如果每个流文件只有一个json,您可以使用EvaluateJsonPath将任何路径提取到属性中,然后RouteOnAttribute来路由您感兴趣的值