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

本文介绍在Flink消费Kafka数据并写入Hbase过程中遇到的问题及解决方案,包括处理依赖冲突、更新过时API等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务场景:

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+timewindow写入到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)));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值