Flink CDC去掉flink-connector-mysql-cdc的包,就报这样的错误
看起来像是找不到sql胖包中的类?Caused by: java.lang.ClassCastException: cannot assign instance of com.fasterxml.jackson.databind.ObjectMapper to field com.ververica.cdc.connectors.mysql.table.MySqlDeserializationConverterFactory$2.val$objectMapper of type com.ververica.cdc.connectors.shaded.com.fasterxml.jackson.databind.ObjectMapper in instance of com.ververica.cdc.connectors.mysql.table.MySqlDeserializationConverterFactory$2
at java.base/java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(Unknown Source)
at java.base/java.io.ObjectStreamClass$FieldReflector.checkObjectFieldValueTypes(Unknown Source)
at java.base/java.io.ObjectStreamClass.checkObjFieldValueTypes(Unknown Source)
at java.base/java.io.ObjectInputStream.defaultCheckFieldValues(Unknown Source)
刚确认了下,MySqlParser这个类flink cdc没有重写过,sql胖包我没用过,flink-connector-mysql-cdc在flink-sql-connector-mysql-cdc包下应该都能找到
你们可以试下把sqlserver的胖包删掉,只保留mysql的一个胖包,flink-connector-mysql-cdc这个包也直接删掉。如果能正常运行,就考虑用瘦包或自己重新打一个sqlserver+mysql的胖包
,只可以拥有一个包,不能都放进去
,此回答整理自钉群“Flink CDC 社区”
这个错误是因为你在代码中尝试将一个com.fasterxml.jackson.databind.ObjectMapper的实例赋值给一个com.ververica.cdc.connectors.shaded.com.fasterxml.jackson.databind.ObjectMapper的实例,但是这两个类并不是同一个类型,所以导致了ClassCastException。
这个问题可能是由于你在项目中引入了重复的Jackson依赖导致的。你可以检查一下你的项目依赖,看是否有多个版本的Jackson被引入。如果有的话,你可以尝试删除多余的依赖,只保留一个版本的Jackson。
根据报错信息,它指出在实例化 com.ververica.cdc.connectors.mysql.table.MySqlDeserializationConverterFactory$2
类时发生了类型转换错误。具体来说,它试图将 com.fasterxml.jackson.databind.ObjectMapper
类型的实例分配给 com.ververica.cdc.connectors.shaded.com.fasterxml.jackson.databind.ObjectMapper
类型的字段。
这种错误通常是由于类加载器冲突或版本不兼容性引起的。可能发生以下情况之一:
Flink 版本和 CDC 连接器版本不兼容:确保 Flink 版本和使用的 CDC 连接器版本相匹配。不同版本的 Flink 和 CDC 连接器可能存在依赖冲突或类兼容性问题。
类加载器冲突:如果您从多个源导入了相同的类,可能会导致类加载器冲突。检查您的项目依赖项并确保没有重复导入相同的类。
依赖版本冲突:检查您项目中使用的其他依赖项,特别是与 Jackson 相关的依赖项。不同版本的 Jackson 可能会导致冲突。尝试升级或降级 Jackson 相关的依赖项版本,以解决冲突问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。