请问下大家同步mysql的decimal(10, 2)类型怎么到cdc后是这样的"total_amount":"CHYE"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
问题描述: 用户在同步MySQL数据库中decimal(10, 2)
类型的数据到CDC(Change Data Capture)过程中,发现原本的数值变成了字符串格式,例如"total_amount":"CHYE"。
查询背景:
问题分析:
解决方案:
Properties properties = new Properties();
properties.setProperty("decimal.handling.mode", "double"); // 或者使用"string"、"precise"等其他适合的处理模式
然后将这些属性应用到你的Flink MySQL Source配置中:
MySqlSource.<String>builder()
.hostname(config.getHostname())
// 其他配置...
.debeziumProperties(properties)
.build();
注意事项:
"decimal.handling.mode","double"
会将Decimal转换为Java的double
类型,可能会有精度损失。"precise"
模式,但需注意这可能对系统资源有更高要求。参考资料:
通过上述方案,您可以解决MySQL decimal(10, 2)
类型数据同步至Flink CDC过程中出现的类型转换异常问题,确保数据的准确性和一致性。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。