请问oracle-cdc用JsonDebeziumDeserializationSchema反序列化,Decimalformat默认的是Base64,为啥会把Number类型的反序列化成"AQ=="这种呢,有什么地方可以设置吗
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用JsonDebeziumDeserializationSchema
进行反序列化时,遇到Number类型被反序列化为类似"AQ=="的Base64字符串,这是因为Debezium在处理某些特殊数据类型(如Decimal)时,默认会采用Base64编码来保证数据的精确性和跨系统兼容性。
要改变这一行为,特别是对于Decimal格式的处理,您需要直接在Flink CDC配置中调整Debezium相关的属性。根据文档资料,可以通过设置Debezium的属性来控制数值类型的处理方式:
Properties properties = new Properties();
properties.setProperty("decimal.handling.mode", "double"); // 或者使用"string"、"precise"等其他适合的模式
这里的decimal.handling.mode
配置项可以设定为不同的值,以改变Decimal的处理逻辑: - "double"
:将Decimal转换为Java的Double
类型,可能会有精度损失。 - "string"
:将Decimal保持为字符串形式,避免精度损失。 - "precise"
:保持Decimal的高精度表示,具体表现形式依据下游消费端的处理能力而定。
通过上述配置,您可以控制如何将Decimal类型的数据反序列化,避免出现Base64编码的情况,从而满足您的业务需求。请确保在构建连接器时应用这些属性设置。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。