本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star


提示:以下是本篇文章正文内容,下面源码分析可供参考,如有出错请指正!

一、seatunnel-connectors-flink-clickhouse

1.总览

seatunnel-connectors-flink-clickhouse1
seatunnel-connectors-flink-clickhouse2

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引用依赖如下:
ck-jdbc依赖包
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);
    }

更多推荐