通过在Kafka Spout中将新的Kafka版本2.1.0与Apache Storm 1.2.2一起使用来获取ClassNotFoundException

时间:2019-02-07 15:45:45

标签: apache-kafka apache-storm

使用新的Kafka版本2.1.0和Storm版本1.2.2从Kafka Spout启动拓扑时,将获得java.lang.ClassNotFoundException:kafka.api.OffsetRequest。当我使用Kafka版本0.10.0.1。时,我不明白这一点。你们能帮忙吗,我想成为最新的Kafka版本?

我尝试了所有从2. *开始的最新kafka版本。但是它不起作用。由:java.lang.ClassNotFoundException:kafka.api.OffsetRequest

2 个答案:

答案 0 :(得分:0)

kafka.api是旧的Scala类。 Many of these were removed in Kafka 2.x

这些类中的大多数都移到了org.apache.kafka.common.requests上,并且有ListOffsetRequestOffsetFetchRequest,所以不确定您要使用哪个类。

如果Storm本身依赖于这些旧API,那么您将被这些旧API所束缚,您自己的处理器将无法使用新API。

此外,Kafka服务器版本本身仅支持这些新请求类的某些API调用。

答案 1 :(得分:0)

除了this answer,我怀疑您正在使用storm-kafka库进行Kafka集成。您需要迁移到基于新的Kafka API的storm-kafka-client。可以在here中找到新模块的文档。

如果您需要从storm-kafka迁移已提交的偏移量,可以在https://github.com/apache/storm/tree/master/external/storm-kafka-migration使用该实用程序。它可以让您迁移而不必重新开始您的Kafka分区。