flink 1.9 sql客户端抛出classnotfoundexception:org.apache.kafka.clients.consumer.consumerrecord

kq0g1dla  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(1114)

尝试将Flink1.9SQL客户端与kafka一起使用,但没有成功。在弄清楚所需的jar文件并将其复制到lib目录之后,在执行select*from table name时出现以下运行时异常:

Flink SQL> select * from default_catalog.default_database.member_customer_newsletters ;
[ERROR] Could not execute SQL statement. Reason:
java.lang.ClassNotFoundException: org.apache.kafka.clients.consumer.ConsumerRecord

执行jar文件的jar-tf,我可以看到类consumerrecord在那里:

jar -tf ./lib/flink-sql-connector-kafka-0.11_2.12-1.9.0.jar|grep 'ConsumerRecord'
org/apache/flink/kafka011/shaded/org/apache/kafka/clients/consumer/ConsumerRecord.class

所以,我不知道为什么它要显示classnotfoundexception,因为这个类已经在jar文件中了?
我只需要添加一个运行时来查找“org.apache.kafka.clients.consumer.consumerrecord”,但是因为这个jar文件是着色的,所以类的完整限定名是“org.apache.flink.kafka011.shaded.org.apache.kafka.clients.consumer.consumerrecord.class”
但是,这个着色jar中的任何其他类也应该如此!

zbq4xfa0

zbq4xfa01#

有两种不同的类别:

org.apache.kafka.clients.consumer.ConsumerRecord
org.apache.flink.kafka011.shaded.org.apache.kafka.clients.consumer.ConsumerRecord

flink-sql-connector-kafka-0.11_2.12-1.9.0.jar ,你找到了班级

org.apache.flink.kafka011.shaded.org.apache.kafka.clients.consumer.ConsumerRecord

当Flink抱怨:

org.apache.kafka.clients.consumer.ConsumerRecord

第一个类是flink内部使用的类,在kafka的一种复制粘贴之后。
第二个是一个班级 kafka-clients-0.11.0.2.jar .
所以Flink抱怨图书馆不见了是对的。

相关问题