Debezium如何关闭数据序列化以直接获取SQL Server源端原始数据
Debezium SQL Server 原始类型输出配置方案
核心类型处理配置
Debezium默认对数值、时间、二进制类型做特殊编码是为了跨系统兼容性,你可以通过修改以下原生配置项直接输出源端原始值,无需额外解码:
DECIMAL 类型配置
默认值为precision,会将DECIMAL编码为base64格式,修改为以下值可直接输出原始数值:
decimal.handling.mode=double:直接输出浮点型数值,适合对精度要求不高的场景,你举例的800.0会直接输出800.0而非编码字符串decimal.handling.mode=string:以字符串格式输出原始数值,无精度损失,适合财务、计量等对精度要求极高的场景
时间/TIMESTAMP 类型配置
time.precision.mode=adaptive_time_microseconds:根据源端字段精度自动匹配输出格式,不会额外做编码转换,时间类型会直接输出对应精度的时间戳或者时间字符串binary.handling.mode=hex:针对SQL Server特有的TIMESTAMP(别名ROWVERSION)二进制类型,直接输出十六进制字符串格式的原始值,无需解码
纯数据输出配置
如果输出结果带Schema包裹结构,可添加以下配置关闭Schema输出,直接返回纯业务数据:
value.converter.schemas.enable=false
不同部署方式配置添加方法
Debezium Server 配置
直接在application.properties文件中添加对应配置即可,完整示例:
# DECIMAL类型输出为浮点数值 debezium.source.decimal.handling.mode=double # 时间类型自适应输出原始格式 debezium.source.time.precision.mode=adaptive_time_microseconds # TIMESTAMP(ROWVERSION)类型输出十六进制原始值 debezium.source.binary.handling.mode=hex # 关闭Schema包裹,直接输出纯数据 debezium.source.value.converter=org.apache.kafka.connect.json.JsonConverter debezium.source.value.converter.schemas.enable=false
Debezium Kafka Connect 连接器配置
在连接器的JSON配置的config节点中添加对应参数即可,完整示例:
{ "name": "sqlserver-connector", "config": { "connector.class": "io.debezium.connector.sqlserver.SqlServerConnector", // 其他常规连接配置省略 "decimal.handling.mode": "double", "time.precision.mode": "adaptive_time_microseconds", "binary.handling.mode": "hex", "value.converter": "org.apache.kafka.connect.json.JsonConverter", "value.converter.schemas.enable": "false" } }
修改配置重启服务后即可获得无编码的源端原始数据。
内容的提问来源于stack exchange,提问作者Akshay
相关产品推荐
相关产品推荐

