Основная цель - передача данных из Kafka topi c в таблицу Clickhouse. Я думаю, можно подумать, почему бы не использовать Clickhouse Kafka Engine? Ну, есть известная проблема - дублированные сообщения . Я пробовал до последней версии сервера Clickhouse , но все равно.
Итак, я решил использовать Kafka Connect JdbcSinkConnector, но получил ошибку:
java. sql .SQLException: не найден подходящий драйвер для jdb c: clickhouse : // localhost: 8123 / по умолчанию на java. sql .DriverManager.getConnection (DriverManager. java: 689) на java. sql .DriverManager.getConnection (DriverManager. java: 208) в io.confluent.connect.jdb c .dialect.GenericDatabaseDialect.getConnection (GenericDatabaseDialect. java: 211) в io.confluent.connect.jdb c .util.CachedConnectionProvider.newConnection:. 88) в io.confluent.connect.jdb c .util.CachedConnectionProvider.getConnection (CachedConnectionProvider. java: 62) в io.confluent.connect.jdb c .sink.JdbcDbWriter.write (Jdbc * 1067. *: 56) at io.confluent.connect.jdb c .sink.JdbcSinkTask.put (JdbcSinkTask. java: 74) в org. apache .kafka.connect.runtime.WorkerSinkTask.deliverMessagesT (WorkerSink). 1071 *: 538) в орг. apache .kafka.connect.runtime.WorkerSinkTask.pol l (WorkerSinkTask. java: 321) в орг. apache .kafka.connect.runtime.WorkerSinkTask.iteration (WorkerSinkTask. java: 224) в орг. apache .kafka.connect.runtime.WorkerSinkTask. выполнить (WorkerSinkTask. java: 192) в орг. apache .kafka.connect.runtime.WorkerTask.doRun (WorkerTask. java: 177) в орг. apache .kafka.connect.runtime.WorkerTask. выполнить (WorkerTask. java: 227)
в java .util.concurrent.Executors $ RunnableAdapter.call (Executors. java: 511) в java .util.concurrent.FutureTask.run (FutureTask . java: 266) в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1149) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java 6: ) в java .lang.Thread.run (Thread. java: 748)
Необходимо установить драйвер Clickhouse JDB C. Я нашел официальный драйвер JDB C и загрузил clickhouse-jdb c -0.2.4.jar со вкладки "релизы" в контейнер.
Также установлен jdk:
apt-get update && apt-get update
apt-get install default-jdk
Кстати, контейнер Kafka Connect docker построен из этого образа:
confluentinc/cp-kafka-connect:5.2.1
Я попытался запустить jar- файл несколькими способами (нет Main-Class
в MANIFEST.MF
):
java -jar clickhouse-jdbc-0.2.4.jar
Это вернуло ошибку:
нет атрибута основного манифеста, в clickhouse-jdb c -0.2.4.jar
Тогда я обнаружил, что если нет Main-Class
в MANIFEST.MF
, -jar
не будет работать. И я попробовал команду:
java -cp clickhouse-jdbc-0.2.4.jar ru.yandex.clickhouse.ClickHouseDriver
и снова потерпел неудачу с ошибкой:
Ошибка: не удалось найти или загрузить основной класс ru.yandex.clickhouse.ClickHouseDriver
Как правильно установить clickhouse-jdb c?