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

用flinkcdc读取mysql的binlog,输出之后全变成了字母乱码了?

用flinkcdc读取mysql的binlog,mysql中原先字段类型为decimal的,输出之后全变成了字母乱码?代码中只是进行了数据的读取,然后输出到了控制台和本地文件。就是这种原先是金额的字段,他们的值都变了,
"points":"AA==","balance":"DZfS",这个是代码,中间什么操作都没做,就是读取数据源,然后打印输出image.png

展开
收起
真的很搞笑 2023-12-20 06:50:43 75 0
2 条回答
写回答
取消 提交回答
  • properties.setProperty("decimal.handling.mode","double");,image.png
    image.png
    ,此回答整理自钉群“Flink CDC 社区”

    2023-12-20 09:57:16
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    这个问题可能是由于 Flink CDC 在读取 MySQL 的 binlog 时,对于 decimal 类型的字段解析不正确导致的。你可以尝试在 Flink CDC 的配置中添加 fieldDelimiter 属性,指定字段分隔符,以便正确解析数据。
    以下是一个示例配置:

    FlinkCDC mysqlSrc = FlinkCDC.forMySql()
    .hostname("localhost")
    .port(3306)
    .username("root")
    .password("your-password")
    .database("your-database")
    .table("your-table")
    .fieldDelimiter(",,“) // 添加字段分隔符
    .startFromLatest()
    .build();

    然后,你可以在 Flink 的 DataStream 阶段使用 JsonDebeziumDeserializationSchema 对数据进行反序列化,代码如下:

    DataStreamSource ds = env.fromSource(
    mysqlSrc, WatermarkStrategy.noWatermarks(), sourceName: "mysqlSrc");
    ds.print();
    env.execute("Flink CDC Example");

    2023-12-20 08:27:52
    赞同 展开评论 打赏

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

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像