• Flink+Flink CDC版本升级的依赖问题总结


    之前使用Flink1.13+Flink CDC2.0同步MySQL数据,想测试一下最新的几个版本。但是各种依赖冲突的报错,经过一段时间的调试,终于解决,现在总结一下。

    1、flink1.15前后jar包名称不一样

    flink-streaming-java、flink-clients、flink-table-api-java-bridge这几个在flink1.15之前,后缀区分Scala版本,如flink-streaming-java_2.12,flink 1.15及之后全部去掉Scala后缀,如flink-streaming-java。

    详见:Maven Repository: org.apache.flink » flink-streaming-java (mvnrepository.com)icon-default.png?t=N7T8https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-java

    2、blink-planner

    flink 1.14 版本以后,之前版本 blink-planner 转正为 flink 唯一的 planner

    所以:flink-table-planner-blink  替换成 flink-table-planner

    flink-table-runtime-blink 替换成 flink-table-runtime

    3、MySQL依赖

    报错:Caused by: java.lang.NoSuchMethodError: com.mysql.cj.CharsetMapping.getJavaEncodingForMysqlCharset(Ljava/lang/String;)Ljava/lang/String;

    如果MySQL是8.0,fink cdc2.1之后由debezium连接器引起的问题。

    将依赖改为8.0.21之后

    1. <dependency>
    2. <groupId>mysql</groupId>
    3. <artifactId>mysql-connector-java</artifactId>
    4. <version>8.0.32</version>
    5. </dependency>

    4、guava30依赖冲突

    报错:NoClassDefFoundError: org/apache/flink/shaded/guava30/com/google/common/collect/Lists

    flink 1.15 及之后和 1.13 使用的 flink-shaded-guava 版本不一样,两个版本不兼容,需要修改 cdc 中的 flink-shaded-guava 版本。

    调整完之后就可以了

    附录

    flink 1.16 + flink-connector-mysql-cdc2.3 的依赖

    1. <properties>
    2. <flink-version>1.16.0flink-version>
    3. properties>
    4. <dependencies>
    5. <dependency>
    6. <groupId>org.apache.flinkgroupId>
    7. <artifactId>flink-javaartifactId>
    8. <version>${flink-version}version>
    9. dependency>
    10. <dependency>
    11. <groupId>org.apache.flinkgroupId>
    12. <artifactId>flink-streaming-javaartifactId>
    13. <version>${flink-version}version>
    14. dependency>
    15. <dependency>
    16. <groupId>org.apache.flinkgroupId>
    17. <artifactId>flink-clientsartifactId>
    18. <version>${flink-version}version>
    19. dependency>
    20. <dependency>
    21. <groupId>org.apache.flinkgroupId>
    22. <artifactId>flink-table-planner_2.12artifactId>
    23. <version>${flink-version}version>
    24. dependency>
    25. <dependency>
    26. <groupId>org.apache.flinkgroupId>
    27. <artifactId>flink-table-runtimeartifactId>
    28. <version>${flink-version}version>
    29. dependency>
    30. <dependency>
    31. <groupId>org.apache.flinkgroupId>
    32. <artifactId>flink-table-api-java-bridgeartifactId>
    33. <version>${flink-version}version>
    34. dependency>
    35. <dependency>
    36. <groupId>org.apache.flinkgroupId>
    37. <artifactId>flink-coreartifactId>
    38. <version>${flink-version}version>
    39. dependency>
    40. <dependency>
    41. <groupId>com.ververicagroupId>
    42. <artifactId>flink-connector-mysql-cdcartifactId>
    43. <version>2.3.0version>
    44. dependency>
    45. <dependency>
    46. <groupId>mysqlgroupId>
    47. <artifactId>mysql-connector-javaartifactId>
    48. <version>8.0.32version>
    49. dependency>
    50. <dependency>
    51. <groupId>org.apache.flinkgroupId>
    52. <artifactId>flink-shaded-guavaartifactId>
    53. <version>30.1.1-jre-16.0version>
    54. dependency>
    55. dependencies>

  • 相关阅读:
    JavaSE之Class类分析
    软考高级系统架构设计师系列论文十八:论软件三层结构的设计
    Python sklearn实现K-means鸢尾花聚类
    Java进阶学习路线图
    JavaEE在线学习系统的设计与实现
    php-面向对象OOP
    C语言初阶——实用调试技巧
    C++中不能重载为友元函数的四个运算符
    探索CSS中的宽度设置:width: 100% 与 width: auto 的区别
    可信计算专业课(持续更新中)
  • 原文地址:https://blog.csdn.net/weixin_44586883/article/details/132695297