Flink1.9.0升级到Flink1.12.1问题汇总

业务场景:

Flink消费Kafka数据写入Hbase

组件版本:

CDH:6.3.0

Flink:1.12.1

Hbase:2.1.0-cdh6.3.0

问题1:

java.lang.NoSuchMethodError:org.apache.commons.cli.Option.builder(Ljava/lang/string;)

 

问题原因:

hadoop-common依赖中commons-cli版本过低,导致程序运行找不到最新版的方法

解决办法:

剔除Hadoop中commons-cli的依赖,并添加高版本依赖

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.0.0</version>
<exclusions>
<exclusion>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
</exclusion>
</exclusions>
</dependency>

问题2:

Flink-Connector-Kafka-0.11_2.11依赖找不到

问题原因:

Flink1.12.1已经不支持Flink-Connector-Kafka-0.11_2.11

解决办法:

依赖统一替换为:flink-connector-kafka_2.11

 

问题3:

Keyby timwindow方法过时,同样代码,在升级到1.12.1之后,运行异常:notifyHeartbeatTimeout

 起初是消费kafka通过keyby+窗口写入到kafka,但升级之后一直无法运行,下游收不到任何数据,程序运行几分钟之后就开始报错

问题原因:API过时
原API:

WindowedStream<Tuple2<Integer, JSONObject>, Tuple, TimeWindow> window = jsobjectMap.keyBy(0).timeWindow(Time.seconds(5));

解决办法:使用新API,指定窗口类型
新API:

WindowedStream<Tuple2<Integer, JSONObject>, Integer, TimeWindow> window = jsobjectMap.keyBy(tuple2 -> tuple2.f0).window(TumblingProcessingTimeWindows.of(Time.seconds(5)));

  

 

posted @ 2022-03-25 11:24  小跑、追幸福  阅读(202)  评论(0编辑  收藏  举报