NiFi,与KafkaConsumer合作写成json

时间:2017-08-16 14:10:13

标签: json apache-kafka apache-nifi processors

目前我遇到了以下问题: 我正在使用KafkaConsumer阅读来自Kafka主题的消息。消息是字符串,具有以下格式: { "a" : "b", "a1" : "b1", "c2" : "c3" } 它们保存在FlowFile的有效负载中。

我想将该字符串转换为json或理想情况下转换为csv,但无法弄清楚如何执行此操作。

我是NiFi的新手,并尽可能地进行了研究,但我找到的答案是关于从json到avro或类似的转换,但从未串起json或avro。 我还发现Kafka消息在FlowFile的有效载荷中,而不在属性中,所以我不知道如何抓住它,因为示例总是涉及属性。

所以简而言之:我可以将FlowFile的有效负载转换为带有一些内置处理器的json / cvs。

2 个答案:

答案 0 :(得分:0)

如果您的消息在FlowFile中,则以下序列可能有所帮助:

1)使用AttributesToJson将有效负载消息转换为Json。 2)使用EvaluateJsonPath提取有效负载消息。在你的情况下kafka消息。然后,您可以传递提取的消息以生成csv。

这篇文章可以帮助将Json转换为CSV:Convert Json To CSV

答案 1 :(得分:0)

我最终这样做了:

  1. ConsumeKafka给我字符串:
  2. { "a" : "b", "a1" : "b1" }

    1. EvaluateJsonPath通过添加属性
    2. 创建属性

      a -> $.a //results in attribute named a with value b

      a1 -> $.a1 //results in attribute named a1 with value b1

      1. ReplaceText从EvaluateJsonPath获取属性以形成一个单独的csv格式化:
      2. Replacement value -> ${'a'},${'a1'}

        这会产生一条线,但没有新线

        b,b1

        要添加附加 \ n 的新行,'\ n'“\ n” >工作。 什么有效在输入替换值字段时按 Shift + Enter ,这导致创建一个空的新行。