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

Flink CDC没有按照主键的所有列而是只按照主键的第1个列split chunk的原因是啥呢?

Flink CDC没有按照主键的所有列而是只按照主键的第1个列split chunk的原因是啥呢?

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

    Flink CDC的split chunk操作是根据主键进行的,而不是根据所有列。这是因为主键是用来唯一标识一行数据的字段,因此使用主键来分割chunk是最合理的。
    如果按照所有列来分割chunk,则可能会导致一些问题。例如,如果有两行数据除了一个非主键列之外其他所有列都相同,那么这两行数据会被分到同一个chunk中,这会导致数据重复的问题。
    此外,如果按照所有列来分割chunk,那么需要处理的数据量会更大,因为每个chunk都需要包含所有列的信息。而如果只按照主键来分割chunk,那么每个chunk只需要包含主键和变更信息即可,大大减少了处理数据量的大小。
    因此,Flink CDC只按照主键的第一个列来进行split chunk操作是有原因的,这样做可以提高数据处理效率并避免数据重复的问题。

    2023-11-16 13:18:36
    赞同 1 展开评论 打赏
  • Flink CDC在获取MySQL表的全量数据时,是按照主键的所有列进行分片的。这是因为在MySQL中,主键索引是多列的,也就是说,主键的多个列的组合是唯一标识一条记录的唯一值。因此,Flink CDC在获取全量数据时,会按照主键的所有列进行分片,以确保每个分片的数据都是唯一的,不会出现重复的数据。

    然而,如果你在MySQL数据库中看到的情况是,Flink CDC似乎只按照主键的第1个列进行分片,这可能是因为你的MySQL数据库中的主键索引结构发生了变化,或者Flink CDC的实现存在一些问题。

    建议你检查一下你的MySQL数据库中的主键索引结构,以及Flink CDC的版本和配置,看看是否有任何问题。

    2023-11-16 10:09:16
    赞同 展开评论 打赏

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

相关产品

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

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载