各位大佬 有没有遇到过这样一个问题 flink cdc 读取oracle ,表中原本数据可以正常读取,在使用oracle客户端插入数据时,flink cdc 报错 com.ververica.cdc.connectors.shaded.org.apache.kafka.connect.errors.DataException: file is not a valid field name
flink 1.15.3
oracle 19c
flink cdc 2.3.0
oracle建表语句:
CREATE TABLE hcuser.HCTEST(
PERSON_ID NUMBER NOT NULL,
FIRST_NAME VARCHAR2(50) NOT NULL,
LAST_NAME VARCHAR2(50) NOT NULL,
PRIMARY KEY(PERSON_ID)
);
oracle插入数据:
insert into hcuser.HCTEST values (3,'hc','hc');
flink建表语句:
set execution.checkpointing.interval=3000;
CREATE TABLE hctest (
PERSON_ID INT NOT NULL,
FIRST_NAME STRING NOT NULL,
LAST_NAME STRING NOT NULL,
PRIMARY KEY(PERSON_ID) NOT ENFORCED
) WITH (
'connector' = 'oracle-cdc',
'scan.startup.mode' = 'initial',
'hostname' = 'xxx',
'port' = '1521',
'username' = 'xxx',
'password' = 'xxx',
'database-name' = 'oatest',
'schema-name' = 'hcuser',
'table-name' = 'HCTEST'
);
这个错误可能与数据类型或字段名有关。具体来说,可能是因为 Flink CDC 在读取 Oracle 数据库表时,无法解析新插入数据的字段名或数据类型,导致了该错误的发生。
为了解决这个问题,您可以尝试以下几个方法:
检查数据类型和字段名:请检查您新插入的数据的数据类型和字段名是否符合 Oracle 数据库表的定义。如果新插入的数据的数据类型或字段名与表定义不一致,可能会导致 Flink CDC 无法解析该数据,从而导致该错误的发生。
调整 Flink CDC 连接器的配置:请检查 Flink CDC 连接器的配置是否正确,包括批处理大小、最大事务延迟等参数。建议您参考 Flink 官方文档中的相关章节,优化 Flink CDC 连接器的配置。
升级 Flink 版本:如果您正在使用较旧版本的 Flink,可能会存在一些已知的问题和 bug。建议您升级至最新版本的 Flink,以获得更好的性能和稳定性。
是的,您遇到的问题可能是由于 Flink CDC 配置中的参数错误导致的。根据您提供的信息,表中的原始数据可以正常读取,但在使用 Oracle 客户端插入数据时,Flink CDC 报错 "file is not a valid field name"。根据这个报错信息,问题可能出现在 Flink CDC 的配置中。
具体来说,您的 Flink CDC 表的配置中,database-name
参数应该使用大写字母,而不是小写字母。请将 'database-name' = 'oatest'
更改为 'DATABASE-NAME' = 'OATEST'
。Oracle 数据库的名称是区分大小写的,因此在配置 Flink CDC 任务时,请确保准确使用大写字母指定数据库名称。
修改后的 Flink CDC 表的建表语句如下所示:
set execution.checkpointing.interval=3000;
CREATE TABLE hctest (
PERSON_ID INT NOT NULL,
FIRST_NAME STRING NOT NULL,
LAST_NAME STRING NOT NULL,
PRIMARY KEY(PERSON_ID) NOT ENFORCED
) WITH (
'connector' = 'oracle-cdc',
'scan.startup.mode' = 'initial',
'hostname' = 'xxx',
'port' = '1521',
'username' = 'xxx',
'password' = 'xxx',
'DATABASE-NAME' = 'OATEST',
'schema-name' = 'hcuser',
'table-name' = 'HCTEST'
);
请注意,Flink CDC 对 Oracle 数据库的支持可能因版本而异。如果修改 database-name
后仍然遇到问题,请确保您使用的 Flink CDC 版本与 Oracle 数据库 19c 兼容,并检查其他配置参数是否正确设置。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。