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

Flink CDC1.13.2和flinkcdc2.0,读取mysql的cdc,有人遇到这个问题吗?

Flink CDC1.13.2和flinkcdc2.0,读取mysql的cdc,有人遇到这个问题吗?image.png
https://github.com/ververica/flink-cdc-connectors/discussions/719

展开
收起
真的很搞笑 2023-11-22 07:39:23 64 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Flink CDC是Apache Flink的一个子项目,它提供了一种在流处理系统中处理改变数据源(CDC)的能力。在Flink CDC 1.13.2中,读取MySQL CDC的代码如下:

    public static class MySQLRecordReader extends AbstractObjectStreamRecordReader {
        private static final long serialVersionUID = 1L;
    
        private final MySQLDataRecordReader reader;
    
        public MySQLRecordReader(MySQLDataRecordReader reader) {
            this.reader = reader;
        }
    
        @Override
        public Object read() throws IOException {
            return reader.read();
        }
    
        @Override
        public boolean isEndOfRecord() throws IOException {
            return reader.isEndOfRecord();
        }
    
        @Override
        public void close() throws IOException {
            reader.close();
        }
    }
    

    这段代码读取MySQL CDC的改变数据流。在Flink CDC 2.0中,读取MySQL CDC的代码有所改变,但是大致相同。以下是Flink CDC 2.0中读取MySQL CDC的代码:

    public static class MySQLRecordReader extends AbstractObjectStreamRecordReader {
        private static final long serialVersionUID = 1L;
    
        private final MySQLDataRecordReader reader;
    
        public MySQLRecordReader(MySQLDataRecordReader reader) {
            this.reader = reader;
        }
    
        @Override
        public Object read() throws IOException {
            return reader.read();
        }
    
        @Override
        public boolean isEndOfRecord() throws IOException {
            return reader.isEndOfRecord();
        }
    
        @Override
        public void close() throws IOException {
            reader.close();
        }
    }
    

    这段代码读取MySQL CDC的改变数据流。在Flink CDC 2.0中,读取MySQL CDC的代码有所改变,但是大致相同。

    2023-11-29 15:24:53
    赞同 展开评论 打赏
  • 看着像是你自己自定义序列化的问题,先测试.deserializer(new JsonDebeziumDeserializationSchema()),此回答整理自钉群“Flink CDC 社区”

    2023-11-22 11:57:55
    赞同 展开评论 打赏
  • 这个问题可能是由于Flink CDC 1.13.2和flinkcdc2.0在读取MySQL的CDC时,遇到了类无法反序列化的问题。为了解决这个问题,你可以尝试以下方法:

    1. 确保你的项目中包含了正确版本的ververica-cdc-connectors-mysql依赖。你可以在项目的pom.xml文件中添加或更新以下依赖:
    <dependency>
        <groupId>com.ververica</groupId>
        <artifactId>ververica-cdc-connectors-mysql</artifactId>
        <version>2.0.0</version>
    </dependency>
    
    1. 如果问题仍然存在,尝试清理并重新构建项目。在IDE中,通常可以通过Build菜单下的Clean ProjectRebuild Project选项来完成。

    2. 如果以上方法都无法解决问题,可以考虑升级到更高版本的Flink CDC,例如2.1.0或更高版本。

    2023-11-22 10:19:52
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 相关电子书

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

    相关镜像