开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flink cdc中oracle NUMBER 未指定则读出来是这个什么原因?

flink cdc中oracle NUMBER 未指定(p,s) flinkcdc 读出来的数据是 {"scale":0,"value":"KQ=="},什么原因?如果使用sql 方式写进去的字段就变成Struct{scale=0,value=[B@75205b7e}。

展开
收起
十一0204 2023-07-19 17:35:53 260 0
1 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在 Flink CDC 中使用 Oracle Connector 读取 Oracle 数据库时,如果 Oracle 表中的 NUMBER 类型未指定精度和小数位数,Flink CDC 默认会将其解析为 BigDecimal 类型。这是因为 Oracle 数据库中的 NUMBER 类型可以存储整数和小数,但如果未指定精度和小数位数,则 Oracle Connector 无法确定其具体类型,因此会将其解析为 BigDecimal 类型。
    如果需要将 Oracle 表中的 NUMBER 类型解析为其他类型,可以在 Flink CDC 的 Oracle Connector 配置中指定数据类型映射。例如,可以在 Oracle Connector 配置中添加以下配置项,将 NUMBER 类型解析为 Double 类型:
    Copy
    "debezium.source.field.schema.include": ".*",
    "debezium.source.field.schema.exclude": "TABLE_NAME\.COLUMN_NAME",
    "debezium.source.column.type.overrides": "TABLE_NAME.COLUMN_NAME=DOUBLE"
    在上述配置中,TABLE_NAME.COLUMN_NAME 表示要指定数据类型映射的列名,DOUBLE 表示要解析的数据类型。
    需要注意的是,如果 Oracle 表中的 NUMBER 类型指定了精度和小数位数,则 Oracle Connector 会将其解析为对应的类型,例如 BigDecimal、Long 或 Double 等

    2023-07-29 20:00:37
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 热门讨论

    热门文章

    相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载

    相关镜像