Nifi JSON正则表达式

时间:2019-02-26 19:49:11

标签: apache apache-nifi

我正在使用Convert AvroToJson处理器将avro转换为json,然后使用表达式$。*拆分json,以将json数组拆分为单个记录。

如果json中有单个元素而不是数组,则失败。

有人可以帮助正则表达式同时支持数组和单个元素。

2 个答案:

答案 0 :(得分:3)

您可能想尝试将ConvertRecord处理器与AvroReader和JsonWriter一起使用,然后将SplitRecord的记录计数设为1。

也有可能避免拆分成单独的记录。通常,这样做是为了处理每条记录,但是使用记录处理器,您通常可以在适当的位置处理它们,从而通过不拆分来显着提高性能。

答案 1 :(得分:1)

好吧,您没有什么可以分割为单个元素的。如果要避免单个元素失败,可以使用ConvertRecord代替ConvertAvroToJson

区别在于,ConvertRecord将为您提供属性record.count,该属性告诉您此FlowFile(以及更通用的流程)中包含多少记录。

这将允许您在RouteOnAttributeConvertRecord之间放置一个中间处理器(SplitJSON)。

因此您可以按以下方式对其进行配置:

  

路由策略=如果所有匹配都路由到“匹配”

     

match(动态属性)= $ {record.count:equals(1)}

然后,将连接matched关系转移到位于SplitJSON之后的处理器,然后将unmatched连接到SplitJSON处理器。 这样,如果只有一条记录(该记录不需要拆分),它将避免使用处理器SplitJSON