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

flink cdc 读取oracle报错,有遇到这种问题的吗

flink cdc 读取oracle报错:

Caused by: java.lang.NoSuchMethodError: io.debezium.config.Field.withType(Lorg/apache/kafka/common/config/ConfigDef$Type;)Lio/debezium/config/Field; at io.debezium.embedded.EmbeddedEngine.(EmbeddedEngine.java:135) at io.debezium.embedded.ConvertingEngineBuilder.(ConvertingEngineBuilder.java:65) at io.debezium.embedded.ConvertingEngineBuilderFactory.builder(ConvertingEngineBuilderFactory.java:26) at io.debezium.engine.DebeziumEngine.create(DebeziumEngine.java:300) at io.debezium.engine.DebeziumEngine.create(DebeziumEngine.java:287) at io.debezium.engine.DebeziumEngine.create(DebeziumEngine.java:273) at com.ververica.cdc.debezium.DebeziumSourceFunction.run(DebeziumSourceFunction.java:409) at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:110) at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:66) at

应该是

io.debezium debezium-connector-oracle 1.9.1.Final

依赖的问题,但是debezium-connector-oracle 2.. 只支持java 11,而目前flink我们用的都是java8,问下各位大佬有遇到这种问题的吗

展开
收起
wenti 2023-02-06 17:10:25 894 0
2 条回答
写回答
取消 提交回答
  • 错误 java.lang.NoSuchMethodError 通常表明在运行时尝试调用不存在的方法。这种情况经常出现在使用了某个库的代码,但是实际部署时该库的版本与预期不符,或者必要的依赖没有正确包含在运行时环境中。

    在这个案例中,报错信息显示 Debezium 试图调用 io.debezium.config.Field 类的 withType() 方法,但这个方法并不存在于 Classpath 中。这通常是由于以下原因造成的:

    依赖冲突:可能是 Debezium Connector 和其他 Kafka 或 Connect 的包之间的版本不一致,导致运行时方法解析出现问题。你需要检查所有的 Debezium 和 Kafka 相关依赖是否版本一致。

    版本不匹配:可能使用的 Debezium Connector 版本与 Flink CDC Connector 依赖的 Debezium Core 版本不兼容。这种情况下,可能需要将 Debezium Connector 降级到一个与 Flink CDC Connector 兼容的版本。

    Java 版本问题:你提到 Debezium Connector Oracle 2.x 版本只支持 Java 11。如果你的系统正在使用 Java 8,并且 Debezium Connector 的最新版本确实不支持 Java 8,那么需要使用一个支持 Java 8 的老版本,或者升级你的系统至 Java 11。

    要解决这个问题,你可以:

    确保你的项目中 Debezium 相关的依赖是兼容的,并且与 Flink CDC Connector 官方推荐的版本保持一致。
    清理和更新项目的依赖树,使用 Maven 的 mvn dependency:tree 查看当前项目使用的 Debezium 相关依赖,并在必要时进行排除不兼容的依赖。
    如果确实需要使用 Java 8 运行环境,而且有 Debezium Connector 兼容性的问题,那么可能需要寻找和使用一个较旧版本的 Debezium Connector,其中较旧版本可能对 Java 8 有更好的支持。
    如果无法解决依赖和版本冲突问题,可能需要考虑将 Flink 集群和相关组件更新到支持 Java 11 的版本。
    另外,请确保在进行任何更改后,彻底测试你的 Flink CDC 作业来验证问题是否已解决,同时没有引入其他问题。如果问题依然存在,建议联系 Flink 社区或查看相关的问题追踪器以获取进一步的协助。

    2024-02-27 16:31:41
    赞同 展开评论 打赏
  • 可以尝试使用debezium-connector-oracle 1.9.1.Final,它支持Java 8。另外,可以尝试更新Flink的依赖,以便使用更新的Debezium版本。

    2023-02-06 22:38:26
    赞同 展开评论 打赏

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

相关产品

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

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

    相关镜像