2016-11-13 78 views
1

我是卡夫卡连接非常新。我想把我的消息从Kafka主题推送到elasticsearch。在下面的可用文档..我下载和编译弹性搜索接收器从发布tar.zip(https://github.com/confluentinc/kafka-connect-elasticsearch/releases卡夫卡连接汇合elasticsearch水槽(没有发现类错误)

我添加了弹性搜索属性文件,并将上述jar包括在classpath中。当我运行卡夫卡在单机模式下连接我得到这个错误

./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

我checkedthe pom.xml的,它有正确定义玩笑客户的依赖。我错过了什么?

任何指针将非常感激。

感谢, 拉杰什

+0

似乎某些东西编译不正确,或者您没有将所有的依赖关系添加到类路径中?也许你可以显示你已经添加到类路径的内容,并确保目标目录中的所有内容都被添加到了worker的类路径中。在大多数情况下,它不会只是你需要的一个罐子,而是几个罐子。 – dawsaw

+0

我只是使用'export CLASSPATH =/vagrant/kafka-connect-elasticsearch-3.1.0/target/kafka-connect-elasticsearch-3.1.0.jar'。还有什么我需要添加到类路径? – Rajesh

+0

在该目标目录中添加所有内容并试一试。目标目录中的其他jar包含连接器的依赖关系,因为目前没有超级jar包装。 – dawsaw

回答

-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,建立和复制与依赖罐子LIBS卡夫卡的目录。

+1

这不是他的项目,他不能修改他下载的罐子的maven pom ... –

+0

你是对的,这不是他的项目。但他用java代码下载zip文件,而不是jar。他说他编译并制作了jar。所以在编译之前,他可以用这种方式修改pom。 –