目前通过JDBC写Clickhouse有两种插件可以用
官方的JDBC:8123端口
基于HTTP实现的,整体性能不太出色,有可能出现超时的现象
housepower的ClickHouse-Native-JDBC:9000端口
基于TCP协议实现,支持高性能写入,数据按列组织并有压缩
记录下使用ClickHouse-Native-JDBC的过程:
Spark版本:2.1.0
Clickhouse版本:20.2.1.2183,单点部署
ClickHouse-Native-JDBC版本:2.1-stable
- 首先在Clickhouse创建一张本地表:
CREATE TABLE IF NOT EXISTS jdbc_test_table \
( \
`name` String, \
`age` UInt8, \
`job` String \
) \
ENGINE = MergeTree() \
PARTITION BY age \
ORDER BY age \
SETTINGS index_granularity = 8192
- 编写Spark代码:
## pom要加入JDBC的依赖
<dependency>
<groupId>com.github.housepower</groupId>
<artifactId>clickhouse-native-jdbc</artifactId>
<version>2.1-stable</version>
</dependency>
import java.sql.SQLFeatureNotSupportedException
import org.apache.spark.SparkConf
import org.apache.spark.sql.{
SaveMode, SparkSession}
object SparkJDBCToClickhouse {
def main(args: Array[String]): Unit = {
val sparkConf: SparkConf =
new SparkConf()
.setAppName("SparkJDBCToClickhouse")
.setMaster("local[1]")
val spark: SparkSession =
SparkSession
.builder()

最低0.47元/天 解锁文章
2228

被折叠的 条评论
为什么被折叠?



