在jdbc接收器连接器中使用kafka smt将avro模式中的Map字段转换为字符串?

sczxawaw  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(300)

我有一个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类型)转换为字符串。我该怎么做?

0aydgbwb

0aydgbwb1#

你需要使用smt和afaik目前没有smt完全满足你的要求( ExtractField 是一个 Map.get 操作,因此不能一次提取嵌套字段)。你可以看看德贝齐姆的 io.debezium.transforms.UnwrapFromEnvelope smt,您可以修改它以提取嵌套字段。 UnwrapFromEnvelope 正在用于cdc事件展平,以便从更复杂的结构(如debezium形成的数据)中提取字段(我相信与您的结构类似)。

相关问题