Apache kafka Kafka Connect-如何使用转换定制json

Apache kafka Kafka Connect-如何使用转换定制json,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,我正在努力实现这个目标 { "source": "NEWS", "metadata": { "publishTime": "02/06/2019 09:56:24.317", "channel": "paper", "status":"active" }, "Data": { "NAME": 67, "GENDER": "MALE", ... } } 但我被这件事缠住了 { "Data": { "NAME": 67, "GENDER": "MAL

我正在努力实现这个目标

{
"source": "NEWS",
"metadata": {
"publishTime": "02/06/2019 09:56:24.317",
"channel": "paper",
"status":"active"
},
"Data": {
"NAME": 67,
"GENDER": "MALE",
    ...
}
}
但我被这件事缠住了

{
    "Data": {
        "NAME": 67,
        "GENDER": "MALE",
    ...

    },
    "source": "NEWS",
    "metadata": "{\"channel\":'paper'}"
}
下面是我的connector.properties

name=source-sqlserver-user
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1
connection.url=jdbc:sqlserver://localhost:1433;database=testing;username=xyz;password=xyz;
table.whitelist=Tickets
mode=incrementing 
incrementing.column.name=Ticket_id
validate.non.null=false
topic.prefix=my-mssql-
transforms=MakeMap123,value,extract,InsertSourceDetails,xyz
transforms.MakeMap123.type=org.apache.kafka.connect.transforms.HoistField$Value
transforms.MakeMap123.field=Data
transforms.value.type=org.apache.kafka.connect.transforms.ValueToKey
transforms.value.fields=Ticket_id
transforms.extract.type=org.apache.kafka.connect.transforms.ExtractField$Value
transforms.extract.field=Ticket_id
#transforms.InsertTopic.type=org.apache.kafka.connect.transforms.InsertField$Value
#transforms.InsertTopic.topic.field=messagetopic
eetransforms.InsertSourceDetails.type=org.apache.kafka.connect.transforms.InsertField$Value
transforms.InsertSourceDetails.static.field=source
transforms.InsertSourceDetails.static.value=NEWS
transforms.xyz.type=org.apache.kafka.connect.transforms.InsertField$Value
transforms.xyz.static.field=metadata
transforms.xyz.static.value={"channel":'paper'}
在这里来源:新闻是静态字段,可以作为例外,但是,我们是否有可能提取同一个表的少数列(所有列都属于一个表)并将其作为另一个json键(在我的例子中是元数据),如上所示。是的,我尝试了
ValueToKey
ExtractField$Value
但是ValueToKey抛出了NPE

这是否可能通过卡夫卡连接转换实现?还是我遗漏了什么??
还是应该使用自定义avro模式?任何自定义avro模式的示例都非常感谢

您的元数据字段是一个字符串。因此,连接无法解析并将其扩展到对象。至少它没有内置的转换。而且您没有显示票证id字段,所以这里有一个NPE@cricket_007糟糕的是,我忘了在json中添加ticket id字段(如果您所指的是这样的话),启用模式使我解析了NPE,但我仍然无法使用ValueToKey,下面是我尝试过的示例