我试图弄清楚是否可以使用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。
答案 0 :(得分:2)
这听起来像Single Message Transform(因此适用于任何连接器,而不仅仅是ES),但是没有开箱即用的功能。 API为documented here。
答案 1 :(得分:0)
我遇到了类似的问题,但相反。我有Json中的数据,我需要将其中的一些转换为Json字符串表示,以使用Cassandra Sink将其存储在Cassandra中。我最终创建了一个Kafka流应用,从主题中读取,然后将Json对象输出到连接器读取的另一个主题。
主题文档< - 通过调用mapValues读取您的kafka流,或创建一个可根据需要序列化的Jackson POJO,然后将值写入 - >主题document.elasticsearch