【问题标题】:Kafka connect confluent elasticsearch sink (no class found error)Kafka connect confluent elasticsearch sink(找不到类错误)
【发布时间】:2017-03-26 22:31:31
【问题描述】:

我对 Kafka 连接非常陌生。我想将我的消息从 Kafka 主题推送到 elasticsearch。遵循可用文档后..我从发行版 tar.zip (https://github.com/confluentinc/kafka-connect-elasticsearch/releases) 下载并编译了弹性搜索接收器

我添加了弹性搜索属性文件并将上面的 jar 包含在类路径中。当我在独立模式下运行 kafka connect 时出现此错误

./usr/bin/connect-standalone etc/schema-registry/connect-avro-standalone.properties etc/kafka-connect-elasticsearch/quickstart-elasticsearch.properties

[2016-11-13 00:05:38,768] ERROR Task elasticsearch-sink-0 threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:142) java.lang.NoClassDefFoundError:io/searchbox/client/JestClientFactory
at io.confluent.connect.elasticsearch.ElasticsearchSinkTask.start(ElasticsearchSinkTask.java:81)
at io.confluent.connect.elasticsearch.ElasticsearchSinkTask.start(ElasticsearchSinkTask.java:52)
at org.apache.kafka.connect.runtime.WorkerSinkTask.initializeAndStart(WorkerSinkTask.java:207)
at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:139)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:140)
at o

NoClassDefFoundError:io/searchbox/client/JestClientFactory

我检查了 pom.xml,它正确定义了 Jest 客户端依赖项。我错过了什么吗?

任何指针将不胜感激。

谢谢, 拉杰什

【问题讨论】:

  • 似乎有些东西没有正确编译,或者您没有将所有依赖项添加到类路径中?也许您可以显示您已添加到类路径中的内容,并确保将目标目录中的所有内容添加到工作者的类路径中。在大多数情况下,您需要的不仅仅是一个罐子,而是几个。
  • 我只是在使用export CLASSPATH=/vagrant/kafka-connect-elasticsearch-3.1.0/target/kafka-connect-elasticsearch-3.1.0.jar。还有什么我需要添加到类路径的吗?
  • 在该目标目录中添加所有内容并试一试。目标目录中的其他 jar 包含连接器的依赖项,因为当前没有 uber jar 打包。
  • 我添加了export CLASSPATH=/vagrant/kafka-connect-elasticsearch-3.1.0/target/kafka-connect-elasticsearch-3.1.0.jar:/vagrant/kafka-connect-elasticsearch-3.1.0/target/kafka-connect-elasticsearch-3.1.0-development/share/java/kafka-connect-elasticsearch/*,它成功了
  • 感谢您的帮助@dawsaw

标签: java apache-kafka apache-kafka-connect


【解决方案1】:

似乎类路径中缺少其中一个依赖项。 Github Releases 页面上的包不包含依赖项。

我建议使用Confluent Open Source distribution 并关注quickstart

【讨论】:

    【解决方案2】:

    您还可以构建胖罐。添加descriptorRefs

    <build>
      <plugins>
      ....
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
          ....
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
          ....
        </plugin>
      </plugins>
      ....
    </build>

    到 pom,构建和复制 jar 到 Kafka 的 libs 目录。

    【讨论】:

    • 不是他的项目,不能修改他下载的jar的maven pom...
    • 你说得对,这不是他的项目。但他用 java 代码下载 zip 存档,而不是 jar。他说他编译并构建了jar。所以在编译之前他可以这样修改pom。
    猜你喜欢
    • 2022-05-31
    • 2020-06-15
    • 2018-12-29
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2021-07-15
    • 2020-01-07
    相关资源
    最近更新 更多