之前使用Flink1.13+Flink CDC2.0同步MySQL数据,想测试一下最新的几个版本。但是各种依赖冲突的报错,经过一段时间的调试,终于解决,现在总结一下。
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。
flink 1.14 版本以后,之前版本 blink-planner 转正为 flink 唯一的 planner
所以:flink-table-planner-blink 替换成 flink-table-planner
flink-table-runtime-blink 替换成 flink-table-runtime
报错: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之后
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>8.0.32</version>
- </dependency>

报错: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 的依赖
- <properties>
- <flink-version>1.16.0flink-version>
- properties>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.flinkgroupId>
- <artifactId>flink-javaartifactId>
- <version>${flink-version}version>
- dependency>
- <dependency>
- <groupId>org.apache.flinkgroupId>
- <artifactId>flink-streaming-javaartifactId>
- <version>${flink-version}version>
- dependency>
- <dependency>
- <groupId>org.apache.flinkgroupId>
- <artifactId>flink-clientsartifactId>
- <version>${flink-version}version>
- dependency>
- <dependency>
- <groupId>org.apache.flinkgroupId>
- <artifactId>flink-table-planner_2.12artifactId>
- <version>${flink-version}version>
- dependency>
- <dependency>
- <groupId>org.apache.flinkgroupId>
- <artifactId>flink-table-runtimeartifactId>
- <version>${flink-version}version>
- dependency>
- <dependency>
- <groupId>org.apache.flinkgroupId>
- <artifactId>flink-table-api-java-bridgeartifactId>
- <version>${flink-version}version>
- dependency>
- <dependency>
- <groupId>org.apache.flinkgroupId>
- <artifactId>flink-coreartifactId>
- <version>${flink-version}version>
- dependency>
- <dependency>
- <groupId>com.ververicagroupId>
- <artifactId>flink-connector-mysql-cdcartifactId>
- <version>2.3.0version>
- dependency>
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>8.0.32version>
- dependency>
- <dependency>
- <groupId>org.apache.flinkgroupId>
- <artifactId>flink-shaded-guavaartifactId>
- <version>30.1.1-jre-16.0version>
- dependency>
- dependencies>