Flink 1.9 SQL Client throws ClassNotFoundException: org.apac



尝试将 Flink 1.9 SQL-Client 与 Kafka 一起使用,但没有成功。 在弄清楚所需的 jar 文件并将它们复制到 lib 目录中后,我在执行 SELECT * FROM 表名时出现以下运行时异常:

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">

但是,这个阴影罐子里的任何其他类也应该如此!

有两个不同的类:

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 抱怨缺少一个库是对的。

相关内容

  • 没有找到相关文章