Apache Nifi - 从 Avro 中提取属性

Apache Nifi - Extract Attributes From Avro

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

这是我的流程,ExecuteSQL -> SplitAvro -> UpdateAttribute

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

的快照

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

目前,there is no way in NiFi to extract attributes directly from Avro (there is not yet an AvroPath 像 XML 的 XPath 或 JSON 的 JsonPath)所以正如你所说,你可以在提取属性之前使用 ConvertAvroToJSON。

或者,我写了一个 Groovy 脚本用于 ExecuteScript 处理器,它将 "Avro path" 值作为动态属性(每个都以 avro.path 开头并且其值实际上是 JsonPath) ,在内存中将 Avro 转换为 JSON,并且需要您下载并指向 Avro JAR。如果您有兴趣,我可以在这里 post 它,但实际上它的唯一优点是在 Avro 中维护流文件内容,虽然这可能很烦人,但您可以使用 ConvertAvroToJson -> EvaluateJsonPath -> ConvertJsonToAvro 作为解决方法。