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

Flink CDC这个问题有没有哪位朋友解决过呀,该怎么处理呀?

Flink CDC这个问题有没有哪位朋友解决过呀,该怎么处理呀?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:58 90 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个问题是说,当你试图使用Flink CDC从没有主键的表中读取数据时,你必须指定scan.incremental.snapshot.chunk.key-column属性。这个属性用于确定如何分割表并将其分片化以便于读取。
    为了解决这个问题,你可以尝试以下几种方法:

    1. 如果表中有其他唯一标识符,如唯一索引或唯一组合键,则可以在scan.incremental.snapshot.chunk.key-column属性中指定这些列,以作为分片键。
    2. 如果表中没有任何唯一的标识符,则可以考虑在表中添加一个新的主键列,以便能够正确地分片数据。
    3. 如果表非常大并且无法更改表结构,则可以尝试减少分片大小,以减小每个分片的数据量。
    2023-11-29 14:24:18
    赞同 展开评论 打赏
  • 这个是参数对无主键表的时候进行拆分使用,此回答整理自钉群“Flink CDC 社区”

    2023-11-22 11:41:17
    赞同 展开评论 打赏
  • 这个错误是因为你没有在Flink SQL中指定增量捕获的快照分片键列。你需要在你的CREATE TABLE语句中添加'scan.incremental.snapshot.chunk.key-column' = 'your_key_column'这一部分。

    例如,如果你的表有一个主键字段id,你可以这样修改你的CREATE TABLE语句:

    CREATE TABLE my_table (
      id INT,
      name STRING,
      PRIMARY KEY (id) NOT ENFORCED
    ) WITH ('connector' = 'kafka',
    'topic' = 'my_topic',
    'properties.bootstrap.servers' = 'localhost:9092',
    'scan.startup.mode' = 'latest-offset',
    'scan.incremental.snapshot.chunk.key-column' = 'id');
    

    这样应该就可以解决这个问题了。

    2023-11-22 08:56:59
    赞同 展开评论 打赏

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

相关产品

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

    更多
    低代码开发师(初级)实战教程 立即下载
    冬季实战营第三期:MySQL数据库进阶实战 立即下载
    阿里巴巴DevOps 最佳实践手册 立即下载