You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by "ha.fengqi@aisino.com" <ha...@aisino.com> on 2024/03/01 06:04:36 UTC

mysql cdc streamapi与sqlapi 输出表现不相同

flink version 1.17.1
mysql cdc version 2.4.2

在streamapi中设置精准一次,修改数据库记录会马上打印出来修改的内容
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
 env.enableCheckpointing(50000, CheckpointingMode.EXACTLY_ONCE);
CheckpointConfig checkpointConfig = env.getCheckpointConfig();
checkpointConfig.setCheckpointStorage("file:\\d:\\cdc");


在sql api中设置精准一次,修改数据后不会立即打印,只会在checkpoint时才会触发输出
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
env.enableCheckpointing(50000, CheckpointingMode.EXACTLY_ONCE);
CheckpointConfig checkpointConfig = env.getCheckpointConfig();
checkpointConfig.setCheckpointStorage("file:\\d:\\cdc");
StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);

这是什么原因?

Re: mysql cdc streamapi与sqlapi 输出表现不相同

Posted by Hang Ruan <ru...@gmail.com>.
你好,ha.fengqi。

MySQL CDC
连接器只有在多并发时,会依赖checkpoint的完成来切换到增量阶段。从你提供的代码上来看,是单并发的运行作业,所以应该Source
在这两者之间的行为不会有区别。
这个不同是不是有可能是下游在两种使用方式上,有什么区别?
可以通过观察具体的IO指标看到Source是否真的及时发出消息,如果比较熟悉代码,也可以自己添加一下打印日志来验证。

祝好,
Hang