SeaTunnel 2.1.2的源码解析(4)seatunnel-connectors-flink-clickhouse
本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star
提示:以下是本篇文章正文内容,下面源码分析可供参考,如有出错请指正!
一、seatunnel-connectors-flink-clickhouse
1.总览
2.源码分析
ClickHouse的底层访问接口支持TCP和HTTP两种协议,其中,TCP协议拥有更好的性能,其默认端口为9000,主要用于集群间的内部通信及CLI客户端;而HTTP协议则拥有更好的兼容性,可以通过REST服务的形式被广泛用于JAVA、Python等编程语言的客户端,其默认端口为8123。但ClickHouse的访问接口并不仅限于此、它还拥有原生的C++、ODBC接口及众多第三方的集成接口(Python、NodeJS、Go、PHP等)。--引用《ClickHouse原理解析与应用实践》
这里SeaTunnel项目连接ClickHouse用JDBC封装接口。pom.xml引用依赖如下:
ClickhouseClient类的构造函数如下:
public ClickhouseClient(Config config) {
//设置JDBC参数
Properties clickhouseProperties = new Properties();
if (TypesafeConfigUtils.hasSubConfig(config, CLICKHOUSE_PREFIX)) {
TypesafeConfigUtils.extractSubConfig(config, CLICKHOUSE_PREFIX, false).entrySet().forEach(e -> {
clickhouseProperties.put(e.getKey(), String.valueOf(e.getValue().unwrapped()));
});
}
clickhouseProperties.put("user", config.getString(USERNAME));
clickhouseProperties.put("password", config.getString(PASSWORD));
String jdbcUrl = "jdbc:clickhouse://" + config.getString(HOST) + "/" + config.getString(DATABASE);
//声明数据源,balancedClickhouseDataSource对象支持设置多个host地址
this.balancedClickhouseDataSource = new BalancedClickhouseDataSource(jdbcUrl, clickhouseProperties);
}