Flink之kafka消费数据

场景:

本地构建Flink程序


问题描述

消费Kafka的数据时,使用Flink新的KakfaSource。会报如下错误

  KafkaSource<String> kafkaSource = KafkaSource.<String>builder()
                .setBootstrapServers(kafkaProperties.getProperty("kafka.bootstrap.servers"))
                .setTopics("test2")
                .setGroupId(kafkaProperties.getProperty("kafka.group.id"))
                .setStartingOffsets(OffsetsInitializer.earliest())
                .setValueOnlyDeserializer(new SimpleStringSchema())
                .build();
Caused by: java.lang.NoSuchMethodError: org.apache.kafka.clients.admin.DescribeTopicsResult.allTopicNames()Lorg/apache/kafka/common/KafkaFuture;

原因分析:

主要原因就是Kafka-clients与Flink连接器的版本冲突的问题


解决方案:

1、将Flink版本和Kafka-clients版本进行一个统一就可以了。在maven中进行修改

    <dependency>
      <groupId>org.apache.kafkagroupId>
      <artifactId>kafka-clientsartifactId>
      <version>3.4.0version>
    dependency>
     <dependency>
      <groupId>org.apache.flinkgroupId>
      <artifactId>flink-connector-kafkaartifactId>
      <version>${flink.version}version>
    dependency>

如下是一些版本对应关系

Flink Kafka 连接器版本 Kafka 客户端库版本
1.17.0 3.4.0 或更高
1.16.0 3.3.0 或更高
1.15.0 3.2.0 或更高
1.14.0 3.0.0 或更高
1.13.0 2.8.0 或更高
1.12.0 2.7.0 或更高
1.11.0 2.6.0 或更高
1.10.0 2.5.0 或更高
1.9.0 2.4.0 或更高

其他版本的信息就需要对照Flink官网和Kakfa官网进行查阅了Flink官网

2、不使用最新的KafkaSource,使用KafkaConsumer进行消费,但是IDEA会警告过时方法

目前是两种解决办法,欢迎有其他方法的大佬进行交流

你可能感兴趣的:(flink,kafka,大数据)