FlinkCDC能读取到快照,但是无法输出更新数据,并行度的设置问题

FlinkCDC能读取到快照,但是无法输出更新数据
发现是并行度问题,当我的并行度超过1的时候就无法捕获更新。

public static void main(String[] args) throws Exception {
        System.setProperty("HADOOP_USER_NAME", "lcq");
        Configuration conf = new Configuration();
        conf.setInteger("rest.port", 2000);
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(4);

        MySqlSource<String> mySqlSource = MySqlSource.<String>builder()
                .hostname("Master")
                .port(3306)
                .databaseList("test") // set captured database
                .tableList("test.cart_info") // set captured table
                .username("root")
                .password("123456")
                .deserializer(new StringDebeziumDeserializationSchema()) // converts SourceRecord to JSON String
                .startupOptions(StartupOptions.initial())
                .build();

        // TODO 使用CDC Source从MySQL读取数据
        DataStreamSource<String> mysqlDS =
                env.fromSource(
                        mySqlSource,
                        WatermarkStrategy.noWatermarks(),
                        "MysqlSource")
                        .setParallelism(1);
        mysqlDS.print();

        env.execute();
    }
    ```
    有大佬回复:
    https://developer.aliyun.com/ask/547600
    出现这个问题的原因是,FlinkCDC 默认使用单线程来处理数据,当并行度高于 1 时,就会创建多个线程来处理数据,每个线程会从 MySQL 中接收到不同的数据,导致数据重复。
解决这个问题的方法是,修改 FlinkCDC 的配置,设置 parallelism.max 的值为 1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值