我正在尝试从 Avro 和 JSON 中提取属性。我可以使用 EvaluateJsonPath
从 JSON 中提取属性处理器。我正在尝试在 Avro 上做同样的事情,但我不确定它是否可以实现。
这是我的流程,ExecuteSQL
-> SplitAvro
-> UpdateAttribute
UpdateAttribute
是我想提取属性的处理器。请在下面找到 UpdateAttribute
的快照处理器,
所以,我的基本问题是,我们可以从 Avro 中提取属性吗?如果是,请为我提供正确的方法。还是必须使用ConvertAvroToJSON
总是在提取属性之前?
最佳答案
目前,there is no way in NiFi to extract attributes directly from Avro (有 not yet an AvroPath 就像 XML 的 XPath 或 JSON 的 JsonPath)所以正如您所说,您可以在提取属性之前使用 ConvertAvroToJSON。
或者,我编写了一个用于 ExecuteScript 处理器的 Groovy 脚本,它将“Avro path”值作为动态属性(每个都以 avro.path 开头,其值实际上是 JsonPath),在内存中将 Avro 转换为 JSON,并且需要您下载并指向 Avro JAR。如果您有兴趣,我可以将其发布在这里,但实际上它唯一的优势是在 Avro 中维护流文件内容,尽管它可能很烦人,但您可以使用 ConvertAvroToJson -> EvaluateJsonPath -> ConvertJsonToAvro 作为解决方法。
关于json - Apache Nifi - 从 Avro 中提取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42496657/