在使用Flink 1.13与mysql-cdc 2.4配合时,如何解决guava版本冲突并进行排除?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用Flink 1.13与mysql-cdc 2.4配合时,可能会遇到guava
版本冲突的问题。以下是解决该问题的具体步骤和方法:
首先需要确认是否存在guava
版本冲突。可以通过以下方式排查: - 使用mvn dependency:tree
命令查看项目的依赖树,检查是否存在多个版本的guava
依赖。 - 如果发现guava
存在多个版本(例如Flink和mysql-cdc分别引入了不同版本的guava
),则需要进行版本排除。
在Maven项目中,可以通过exclusions
标签排除不必要的guava
依赖。以下是具体操作步骤:
通过mvn dependency:tree
命令找到引入guava
的具体依赖路径。例如:
+- org.apache.flink:flink-streaming-java_2.11:jar:1.13.0:compile
| \- com.google.guava:guava:jar:28.0-jre:compile
+- io.debezium:debezium-connector-mysql:jar:2.4.0:compile
\- com.google.guava:guava:jar:30.1.1-jre:compile
从上述输出可以看出,flink-streaming-java
引入了guava:28.0-jre
,而debezium-connector-mysql
引入了guava:30.1.1-jre
。
exclusions
排除冲突在pom.xml
中,针对冲突的依赖添加exclusions
配置。例如,如果希望保留guava:30.1.1-jre
,可以排除flink-streaming-java
中的guava
依赖:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.11</artifactId>
<version>${flink.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
为了避免其他潜在的版本冲突,可以在pom.xml
中使用dependencyManagement
强制指定guava
的版本。例如:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
</dependencies>
</dependencyManagement>
这样可以确保整个项目中只使用guava:30.1.1-jre
版本。
完成上述配置后,重新运行mvn dependency:tree
命令,确认guava
依赖已统一为指定版本。如果没有冲突,则说明问题已解决。
flink-streaming-java
)建议设置为provided
,以避免将不必要的依赖打包到作业JAR中。compile
范围,以确保其被打包到作业JAR中。guava
版本与Flink和mysql-cdc均兼容。如果不确定兼容性,可以参考官方文档或社区建议。通过以上步骤,您可以有效解决Flink 1.13与mysql-cdc 2.4配合时的guava
版本冲突问题,并确保项目的稳定运行。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。