Kafka соединяет сливную раковину elasticsearch (ошибка класса не найдена)

Я новичок в Kafka Connect. Я хочу протолкнуть свои сообщения из темы Kafka в elasticsearch. После ознакомления с доступной документацией .. Я загрузил и скомпилировал эластичный поисковый приемник из выпуска tar.zip (https://github.com/confluentinc/kafka-connect-elasticsearch/releases)

Я добавил файл свойств эластичного поиска и включил указанную выше банку в путь к классам. Когда я запускаю kafka connect в автономном режиме, я получаю эту ошибку

./usr/bin/connect-standalone и т. д. / schema-registry / connect-avro-standalone.properties и т. д. / 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. Я что-нибудь упускаю?

Любые указатели были бы очень признательны.

Спасибо, Раджеш


person Rajesh    schedule 13.11.2016    source источник
comment
Кажется, что-то скомпилировано неправильно или вы не добавили все зависимости в путь к классам? Возможно, вы можете показать, что вы добавили в путь к классам, и убедиться, что все в целевом каталоге добавлено в путь к классам для рабочего. В большинстве случаев вам понадобится не одна банка, а несколько.   -  person dawsaw    schedule 13.11.2016
comment
Я просто использую export CLASSPATH=/vagrant/kafka-connect-elasticsearch-3.1.0/target/kafka-connect-elasticsearch-3.1.0.jar. Есть ли что-нибудь еще, что мне нужно добавить в путь к классам?   -  person Rajesh    schedule 13.11.2016
comment
Добавьте все в этот целевой каталог и попробуйте. Другие jar-файлы в целевом каталоге содержат зависимости для коннектора, поскольку в настоящее время нет упаковки uber jar.   -  person dawsaw    schedule 13.11.2016
comment
Я добавил 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/*, и это сработало   -  person Rajesh    schedule 14.11.2016
comment
Цените вашу помощь @dawsaw   -  person Rajesh    schedule 14.11.2016


Ответы (2)


Похоже, что одна из зависимостей отсутствует в пути к классам. Пакеты на странице выпусков Github не содержат зависимостей.

Я бы предложил использовать Confluent Open Source distribution и следовать краткое руководство.

person shikhar    schedule 14.11.2016

Также можно соорудить толстую банку. Добавить 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>

для создания, создания и копирования jar-файла с зависимостями в каталог libs Kafka.

person Anatoly Tikhonov    schedule 07.12.2017
comment
Это не его проект, он не может изменить maven pom загруженной банки ... - person Roddy of the Frozen Peas; 07.12.2017
comment
Вы правы, это не его проект. Но он скачивает zip-архив с java-кодом, а не jar. И он сказал, что компилирует и строит jar. Поэтому перед компиляцией он может изменить pom таким образом. - person Anatoly Tikhonov; 08.12.2017