我正试图从Avro和JSON中提取属性。我可以使用EvaluateJsonPath
处理器从JSON中提取属性。我试图在Avro上做同样的事,但我不确定它是否可以实现。
以下是我的流程ExecuteSQL
- > SplitAvro
- > UpdateAttribute
UpdateAttribute
是我想要提取属性的处理器。请在下面找到UpdateAttribute
处理器的快照,
所以,我的基本问题是,我们可以从Avro中提取属性吗?如果是,请为我提供正确的方法。或者在提取属性之前是否有必要使用ConvertAvroToJSON
?
答案 0 :(得分:11)
目前,there is no way in NiFi to extract attributes directly from Avro(有not yet an AvroPath类似XPath for XML或JsonPath for JSON),正如您所说,您可以在提取属性之前使用ConvertAvroToJSON。
或者,我编写了一个用于ExecuteScript处理器的Groovy脚本,它将“Avro path”值作为动态属性(每个以avro.path开头,其值实际上是JsonPath),将Avro转换为JSON in内存,并要求您下载并指向Avro JAR。如果你感兴趣,我可以在这里发布它,但它真正唯一的优点是在Avro中维护流文件内容,虽然它可能很烦人,你可以使用ConvertAvroToJson - > EvaluateJsonPath - > ConvertJsonToAvro作为解决方法。