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%E3%80%82
"scan.incremental.snapshot.chunk.key-column"是一个选项,当源表没有主键时必须设置,用于指定Flink在CDC过程中生成增量快照时应使用哪个列作为主键。根据上述错误消息,您似乎没有设置该选项。
您可以尝试按照以下步骤解决:
CREATE TABLE my_table (
...
) WITH (
...
'scan.incremental.snapshot.chunk.key-column' = 'your_key_column',
...
)
这里,your_key_column
需要替换成您想用作主键的列。
KeySelector
类来生成唯一的ID,并将它应用于每一行数据。这个错误提示 "org.apache.flink.table.api.validationexception: 'scan.incremental.snapshot.chunk.key-column' must be set when the table doesn't have primary keys" 表示当表没有主键时,必须设置 'scan.incremental.snapshot.chunk.key-column'。
解决这个问题的方法是在创建表的时候,为没有主键的表指定一个唯一的标识列作为'scan.incremental.snapshot.chunk.key-column'。例如:
CREATE TABLE IF NOT EXISTS my_table (
id BIGINT,
name STRING,
age INT,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'oracle-cdc',
'hostname' = '192.168.252.107',
'port' = '1521',
'username' = 'conn_uat',
'password' = 'xxxx',
'database-name' = 'CONN_UAT',
'schema-name' = 'strc',
'table-name' = 'MY_TABLE',
'scan.incremental.snapshot.chunk.key-column' = 'id'
);
在这个例子中,我们为my_table表指定了id列作为'scan.incremental.snapshot.chunk.key-column'。这样就可以解决没有主键的表无法进行增量捕获的问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。