【问题标题】:Apache Nifi - Extract Attributes From AvroApache Nifi - 从 Avro 中提取属性
【发布时间】:2017-07-18 17:02:39
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: json avro apache-nifi


    【解决方案1】:

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

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

    【讨论】:

    • 再次感谢您的帮助。我将使用ConvertAvroToJson -> EvaluateJsonPath -> ConvertJsonToAvro 作为解决方法
    • 难道您不能也从 JSON 内容中提取属性,然后将属性与 Avro 内容合并回流文件中吗?
    • @Andy,我可以使用EvaluateJSONPath 从 JSON 中提取属性。但从未尝试将属性与 Avro 合并。我试图从 Avro 和 Json 中提取属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2019-02-19
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多