flinksqlcdc,全量到增量的话,并行度会自动转为1吗,还是得自己操作?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在 Flink SQL CDC 中,全量到增量的抓取过程是通过两个不同的任务实现的,分别是全量任务和增量任务。全量任务用于从数据源中抓取全量数据,并将其写入到 Red 中;增量任务用于监听数据源的变更,并将变更数据写入到 Red 中。因此,在全量到增量的转换过程中,需要停止全量任务,并启动增量任务。
当全量任务停止后,Flink 会自动停止并释放全量任务的并行度资源,这时增量任务可以重新启动,并使用全量任务的并行度资源。具体来说,Flink SQL CDC 会根据配置文件中的 parallelism.default 参数自动设置增量任务的并行度,该参数默认值为 1。因此,在全量到增量的转换过程中,并行度会自动转为 1。
如果您希望在增量任务中使用其他并行度,可以手动设置增量任务的并行度,例如:
sql
Copy
INSERT INTO your_red_sink
SELECT * FROM your_source_table
WITH (
'connector' = 'mysql-cdc',
'startup-mode' = 'earliest-offset',
'debezium.snapshot.locking.mode' = 'none',
'debezium.snapshot.mode' = 'initial',
'debezium.snapshot.fetch.size' = '1024',
'debezium.snapshot.max.threads' = '1',
'debezium.poll.interval.ms' = '1000',
'debezium.table.whitelist' = 'your_table',
'debezium.transforms' = 'unwrap',
'debezium.transforms.unwrap.type' = 'io.debezium.transforms.ExtractNewRecordState',
'parallelism' = '4'
);
上述代码中,通过在 WITH 子句中添加 'parallelism' = '4' 参数,将增量任务的并行度设置为 4。
在 Flink SQL CDC 中,当从全量到增量切换时,并行度不会自动转为 1。并行度的设置仍然是由用户进行操作。
在 Flink SQL 中,可以通过 ALTER TABLE 语句来修改表的属性,包括并行度。例如,您可以使用以下命令将并行度设置为 1:
ALTER TABLE yourTable SET ('parallelism'='1');
请注意,设置并行度为 1 可能会降低任务的并发性和读取速度。这是因为所有的数据都将由单个任务处理,而不是同时由多个任务处理。
在切换从全量到增量模式时,需要综合考虑数据规模、系统资源和性能需求等因素来确定最适合的并行度设置。建议根据具体情况进行测试和调优,以获得最佳性能。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。