这个主要是jdbc的依赖问题
,new JdbcConnectionOptions.JdbcConnectionOptionsBuilder()
.withUrl(Constants.CLICKHOUSE_URL)
.withDriverName(Constants.CLICKHOUSE_DRIVER)
.build()
public static final String CLICKHOUSE_URL="jdbc:clickhouse://hadoop:8123/default";
//public static final String CLICKHOUSE_DRIVER="com.clickhouse.jdbc.ClickHouseDataSource";
public static final String CLICKHOUSE_DRIVER= "ru.yandex.clickhouse.ClickHouseDriver";
相应的依赖包是:
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.3.2</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-jdbc</artifactId>
<version>1.16.0</version>
<!--这里是需要把provided修改为compile兼容版本的,否则报错-->
<scope>compile</scope>
</dependency>
具体来说就是clickhouse-jdbc对应的驱动包有两类。
一类是
ru.yandex.clickhouse.ClickHouseDriver
<!-- https://mvnrepository.com/artifact/ru.yandex.clickhouse/clickhouse-jdbc -->
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.3.2</version>
</dependency>
另一类是
com.clickhouse.jdbc.ClickHouseDataSource
<!-- https://mvnrepository.com/artifact/com.clickhouse/clickhouse-jdbc -->
<dependency>
<groupId>com.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.4.6</version>
</dependency>
两者间的主要区别如下:
1)驱动类加载路径不同,分别为 ru.yandex.clickhouse.ClickHouseDriver 和 com.github.housepower.jdbc.ClickHouseDriver
2)默认连接端口不同,分别为 8123 和 9000,此项目端口是8123,所以驱动包也相应确认。
3)连接协议不同,官方驱动使用 HTTP 协议,而三方驱动使用 TCP 协议
原文链接:https://blog.csdn.net/ITczh/article/details/120528324
https://mvnrepository.com/artifact/ru.yandex.clickhouse/clickhouse-jdbc