FlinkCDC监控Oracle时json返回值异常(float,numeric)

FlinkCDC监控Oracle时json返回值异常(float,numeric)

问题描述

`用flinkcdc 监控Oracle时如果Oracle字段类型是float,numeric,字段的值就显示异常,如下面所示

Oracle数据:COLUMN2值为123,字段类型为float

flinkcdc返回的值为"COLUMN2":{“scale”:0,“value”:“ew==”}

{“before”:{“NAME”:“1”,“AGE”:“12”,“CITY”:“ww”,“SEX”:“65”,“DCCDATE”:null,“COLUMN2”:{“scale”:0,“value”:“ew==”},“COLUMN3”:0.0,“COLUMN4”:0.0},“after”:{“NAME”:“1”,“AGE”:“12”,“CITY”:“ww”,“SEX”:“12”,“DCCDATE”:null,“COLUMN2”:{“scale”:0,“value”:“ew==”},“COLUMN3”:0.0,“COLUMN4”:0.0},“source”:{}}

我们希望返回的值为"COLUMN2":“123.0”


解决方案:

Properties properties = new Properties();
//加以下配置生效
properties.setProperty(“decimal.handling.mode”,“double”);
StreamExecutionEnvironment bsEnv = StreamExecutionEnvironment.getExecutionEnvironment();
bsEnv.setRuntimeMode(RuntimeExecutionMode.STREAMING);

    Map<String, Object> customConverterConfigs = new HashMap<>();
    customConverterConfigs.put(JsonConverterConfig.DECIMAL_FORMAT_CONFIG, "numeric");
    SourceFunction<String> sourceFunction = OracleSource.<String>builder()
            .hostname(host)
            .port(1521)
            .database(db)
            .schemaList(schema)
            .tableList(table)
            .username(user)
            .password(pw)
            .startupOptions(StartupOptions.latest())
            **.debeziumProperties(properties)**
            .deserializer(new JsonDebeziumDeserializationSchema()
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值