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

我的flink 13.6依赖的shaded-guava是18,和mysql-cdc不一样,怎么解决?

我的flink 13.6依赖的shaded-guava是18,mysql-cdc依赖的又是30,引入18,30就没了;引入30,18就没了,怎么解决?

展开
收起
冰激凌甜筒 2023-04-18 16:39:19 533 0
2 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    这个问题是因为 Flink 1.13.6 中的 shaded-guava 和 mysql-cdc 2.3.0 使用的 Guava 版本不兼容,导致无法同时引入。解决方案如下:

    1. 将 mysql-cdc 2.3.0 中的 Guava 版本升级到与 Flink 1.13.6 中 shaded-guava 版本一致的版本。您可以在 pom.xml 中将 mysql-cdc 2.3.0 的 Guava 版本修改为 Flink 1.13.6 中 shaded-guava 的版本,在 POM 文件中加入以下内容:
    <properties>
        <flink.version>1.13.6</flink.version>
        <flink-shaded-guava.version>XX.X.X</flink-shaded-guava.version>
    </properties>
    
    <dependencies>
        <!-- Flink 1.13.6 -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <exclusions>
                <!-- Exclude the included Guava as it conflicts with mysql-cdc -->
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    
        <!-- mysql-cdc 2.3.0 -->
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-cdc-connectors</artifactId>
            <version>2.3.0</version>
            <exclusions>
                <!-- Exclude the included Guava as it conflicts with the Flink shaded guava -->
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    
        <!-- use the Flink shaded guava -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-shaded-guava_${scala.binary.version}</artifactId>
            <version>${flink-shaded-guava.version}</version>
        </dependency>
    </dependencies>
    

    其中,换掉 <flink-shaded-guava.version> 的值,确保其与 Flink 中的 shaded-guava 版本一致。

    1. 如果无法升级 mysql-cdc 的 Guava 版本,可以考虑给 Flink 添加 Guava 30 的依赖,避免冲突。您可以手动下载 Guava 30 的 jar 包,然后通过以下命令将其安装到本地 Maven 仓库(需要使用相关软件支持,比如 Maven 或 Gradle),然后再添加 Flink 依赖,确保 Guava 30 的 jar 包可以被 Flink 正常加载:
    mvn install:install-file -DgroupId=com.google.guava -DartifactId=guava -Dversion=30.1.1-jre -Dpackaging=jar -Dfile=<path/to/guava-30.1.1-jre.jar>
    
    1. 如果无法使用以上两种方式解决冲突,可以考虑使用其他版本兼容的 Flink 和 mysql-cdc。可以参考官方文档中的版本兼容性规则,选择版本号互相兼容的 Flink 和 mysql-cdc。
    2023-04-30 13:15:57
    赞同 展开评论 打赏
  • 存在即是合理

    可能是因为Flink和MySQL的依赖版本不兼容导致的问题。在Flink中,你需要使用18版本的Guava库,而在MySQL中,你需要使用30版本的MySQL Connector/C++库。

    为了解决这个问题,你可以尝试以下几种方法:

    1、使用Maven等构建工具来管理依赖版本,确保Flink和MySQL使用相同的版本。

    2、在Flink中使用--dependencies参数来指定所需的依赖版本,

    2023-04-18 16:47:53
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 热门讨论

    热门文章

    相关电子书

    更多
    搭建电商项目架构连接MySQL 立即下载
    搭建4层电商项目架构,实战连接MySQL 立即下载
    PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

    相关镜像