【发布时间】:2020-06-19 08:02:16
【问题描述】:
主要目的是将数据从 Kafka 主题传输到 Clickhouse 表中。我想人们会想为什么不使用 Clickhouse Kafka Engine?嗯,有known problem - duplicated messages。我尝试了latest version of Clickhouse server,但都是一样的。
所以,我决定使用 Kafka Connect JdbcSinkConnector 但出现错误:
java.sql.SQLException:找不到合适的驱动程序 jdbc:clickhouse://localhost:8123/默认在 java.sql.DriverManager.getConnection(DriverManager.java:689) 在 java.sql.DriverManager.getConnection(DriverManager.java:208) 在 io.confluent.connect.jdbc.dialect.GenericDatabaseDialect.getConnection(GenericDatabaseDialect.java:211) 在 io.confluent.connect.jdbc.util.CachedConnectionProvider.newConnection(CachedConnectionProvider.java:88) 在 io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection(CachedConnectionProvider.java:62) 在 io.confluent.connect.jdbc.sink.JdbcDbWriter.write(JdbcDbWriter.java:56) 在 io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:74) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:538) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:321) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:224) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:192) 在 org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:177) 在 org.apache.kafka.connect.runtime.WorkerTask.run(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:624) 在 java.lang.Thread.run(Thread.java:748)
需要安装 Clickhouse JDBC 驱动程序。我找到了the official JDBC driver 并将clickhouse-jdbc-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 文件(MANIFEST.MF 中没有 Main-Class):
java -jar clickhouse-jdbc-0.2.4.jar
这返回了错误:
没有主清单属性,在 clickhouse-jdbc-0.2.4.jar 中
然后我发现如果MANIFEST.MF 中没有Main-Class,-jar 将不起作用。我尝试了命令:
java -cp clickhouse-jdbc-0.2.4.jar ru.yandex.clickhouse.ClickHouseDriver
然后再次失败并出现错误:
错误:无法找到或加载主类 ru.yandex.clickhouse.ClickHouseDriver
安装clickhouse-jdbc的正确方法是什么?
【问题讨论】:
-
你需要 clickhouse-jdbc-0.2.4-shaded.jar (5MB) 而不是 clickhouse-jdbc-0.2.4.jar (202kb)——它只是没有 3party 库的 CH-jdbc 代码
标签: jdbc apache-kafka apache-kafka-connect clickhouse