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

Flink CDC有没有办法忽略这些无主键的表,或者忽略这个错误呀?

Flink CDC中 flink mysql cdc抽取整个数据库表数据的时候,里面有部分表无主键,就会报错:Caused by: org.apache.flink.table.api.ValidationException: 'scan.incremental.snapshot.chunk.key-column' must be set when the table doesn't have primary keys.,然后作业就会停掉了。有没有办法忽略这些无主键的表,或者忽略这个错误呀?

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

    可以尝试设置 scan.incremental.snapshot.chunk.size 参数为-1来避免此错误,这样 Flink CDC 就会把整个 snapshot 数据作为一次增量快照,而不是按照 chunk 来分块读取。
    此外,在Flink 1.15 版本开始,对于没有主键的表,可以通过配置 table.exec.scan.use-push-down-primary-key 参数为 false 来忽略主键检查。
    但需要注意的是,这两种方法都可能导致性能下降,因为 Flink CDC 在处理无主键的表时可能无法高效地进行增量更新和删除操作。所以最好的方式还是给每个表加上一个唯一的主键。

    2023-11-29 14:28:46
    赞同 1 展开评论 打赏
  • 在Flink CDC中,当您尝试抽取整个数据库表数据时,遇到部分无主键的表会导致错误:'scan.incremental.snapshot.chunk.key-column' must be set when the table doesn't have primary keys。这是因为在没有主键的情况下,Flink CDC无法确定如何捕获数据的增量变更。为了解决这个问题,您可以采取以下策略:

    1. 为无主键的表设置一个代理主键或复合主键。这样,Flink CDC就可以使用这个主键来捕获数据的变更。
    2. 使用Flink CDC的ignore-not-found-primary-keys配置选项。当设置为true时,Flink CDC将忽略那些没有主键的表,从而避免报错并继续处理其他有主键的表。但请注意,这可能会导致同步的数据不完整。
    3. 使用Flink CDC的include-schemas配置选项,仅指定需要同步的表和其模式。这样,您可以避免同步那些没有主键的表。

    综上所述,虽然存在上述方法可以避免报错,但最佳实践是为所有表设置主键,以确保数据的完整性和一致性。

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

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

相关产品

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

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