Apache Nifi - 从Avro中提取属性

时间:2017-02-27 22:07:39

标签: json avro apache-nifi

我正试图从Avro和JSON中提取属性。我可以使用EvaluateJsonPath处理器从JSON中提取属性。我试图在Avro上做同样的事,但我不确定它是否可以实现。

以下是我的流程ExecuteSQL - > SplitAvro - > UpdateAttribute

UpdateAttribute是我想要提取属性的处理器。请在下面找到UpdateAttribute处理器的快照,

UpdateAttribute Processor COnfiguration

所以,我的基本问题是,我们可以从Avro中提取属性吗?如果是,请为我提供正确的方法。或者在提取属性之前是否有必要使用ConvertAvroToJSON

1 个答案:

答案 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作为解决方法。