我有一个avro模式定义如下:
[
{
"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 sink connector将这些数据推送到postgres,以便转换 "metaData"
将架构中的字段(Map类型)转换为字符串。我该怎么做?
1条答案
按热度按时间0aydgbwb1#
你需要使用smt和afaik目前没有smt完全满足你的要求(
ExtractField
是一个Map.get
操作,因此不能一次提取嵌套字段)。你可以看看德贝齐姆的io.debezium.transforms.UnwrapFromEnvelope
smt,您可以修改它以提取嵌套字段。UnwrapFromEnvelope
正在用于cdc事件展平,以便从更复杂的结构(如debezium形成的数据)中提取字段(我相信与您的结构类似)。