flinksqlcdc,全量到增量的话,并行度会自动转为1吗,还是得自己操作?

flinksqlcdc,全量到增量的话,并行度会自动转为1吗,还是得自己操作?

展开
收起
真的很搞笑 2023-07-13 11:09:38 154 分享 版权
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在 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。

    2023-07-30 09:38:13
    赞同 展开评论
  • 在 Flink SQL CDC 中,当从全量到增量切换时,并行度不会自动转为 1。并行度的设置仍然是由用户进行操作。

    在 Flink SQL 中,可以通过 ALTER TABLE 语句来修改表的属性,包括并行度。例如,您可以使用以下命令将并行度设置为 1:

    ALTER TABLE yourTable SET ('parallelism'='1');
    

    请注意,设置并行度为 1 可能会降低任务的并发性和读取速度。这是因为所有的数据都将由单个任务处理,而不是同时由多个任务处理。

    在切换从全量到增量模式时,需要综合考虑数据规模、系统资源和性能需求等因素来确定最适合的并行度设置。建议根据具体情况进行测试和调优,以获得最佳性能。

    2023-07-29 23:32:54
    赞同 展开评论

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

还有其他疑问?
咨询AI助理