Kafka Connect将JSON字符串转换为实际的JSON

时间:2017-09-24 10:58:13

标签: json apache-kafka-connect

我试图弄清楚是否可以使用Kafka Connect将存储为字符串的JSON值转换为实际的JSON结构。

我试过寻找这样的转变,却找不到。例如,这可能是来源:

{
  "UserID":2105058535,
  "DocumentID":2105058535,
  "RandomJSON":"{\"Tags\":[{\"TagID\":1,\"TagName\":\"Java\"},{\"TagID\":2,\"TagName\":\"Kafka\"}]}"
}

这是我的目标:

{
  "UserID":2105058535,
  "DocumentID":2105058535,
  "RandomJSON":{
    "Tags":[
      {
        "TagID":1,
        "TagName":"Java"
      },
      {
        "TagID":2,
        "TagName":"Kafka"
      }
    ]
  }
}

我正在尝试为Elasticsearch sink连接器进行这些转换,如果它有所不同。

我知道我可以使用Logstash和JSON过滤器来实现这一点,但我想知道是否有办法只使用Kafka Connect。

2 个答案:

答案 0 :(得分:2)

这听起来像Single Message Transform(因此适用于任何连接器,而不仅仅是ES),但是没有开箱即用的功能。 API为documented here

答案 1 :(得分:0)

我遇到了类似的问题,但相反。我有Json中的数据,我需要将其中的一些转换为Json字符串表示,以使用Cassandra Sink将其存储在Cassandra中。我最终创建了一个Kafka流应用从主题中读取,然后将Json对象输出到连接器读取的另一个主题

主题文档< - 通过调用mapValues读取您的kafka流,或创建一个可根据需要序列化的Jackson POJO,然后将值写入 - >主题document.elasticsearch