Apache kafka 在jdbc接收器连接器中使用kafka SMT将avro模式中的映射字段转换为字符串?
我有一个avro模式,定义如下:Apache kafka 在jdbc接收器连接器中使用kafka SMT将avro模式中的映射字段转换为字符串?,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,我有一个avro模式,定义如下: [ { "namespace": "com.fun.message", "type": "record", "name": "FileData", "doc": "Avro Schema for FileData", "fields": [ {"name": "id", "type": "string", "doc": "Unique file id" }, {"name": "ab
[
{
"namespace": "com.fun.message",
"type": "record",
"name": "FileData",
"doc": "Avro Schema for FileData",
"fields": [
{"name": "id", "type": "string", "doc": "Unique file id" },
{"name": "absolutePath", "type": "string", "doc": "Absolute path of file" },
{"name": "fileName", "type": "string", "doc": "File name" },
{"name": "source", "type": "string", "doc": "unique identification of source" },
{"name": "metaData", "type": {"type": "map", "values": "string"}}
]
}
]
我想使用jdbc接收器连接器将这些数据推送到postgres,这样我就可以将模式中的
“metaData”
字段(映射类型)转换为字符串。我该怎么做 您需要使用SMT和AFAIK目前没有完全满足您要求的SMT(ExtractField
是一个Map.get
操作,因此不能一次提取嵌套字段)。您可以看看Debezium的SMT,您可以修改它来提取嵌套字段
UnwrapFromEnvelope
用于从更复杂的结构中提取字段,如Debezium形成的数据(我相信与您的结构类似) 你研究过简单的消息转换吗?是的,我对SMT做了很多研究,并查阅了这些文档@cricket_007;好的,您在实现自己的功能时遇到了哪些问题?或者,您是否尝试过在应用JDBC接收器之前在数据上运行KStreamsmapValues()
函数?是的,我部署了一个kafka流处理器,它为我执行此转换。@cricket\u 007Yes我发现了。但这并不能使结构或贴图变平。所以,如果我想将映射或结构转换为字符串,那么我需要自定义此转换?