springboot整合clickhouse

1.pom 配置

       <dependency>
            <groupId>ru.yandex.clickhouse</groupId>
            <artifactId>clickhouse-jdbc</artifactId>
            <version>0.3.2</version>
        </dependency>

如果需要查询bitmap,或者使用bitmap,还需要引入

        <dependency>
            <groupId>org.roaringbitmap</groupId>
            <artifactId>RoaringBitmap</artifactId>
            <version>0.9.31</version>
        </dependency>

2.配置

clickhouse:
  url: jdbc:clickhouse://ip:port/xxxx
  username: xxxx
  password: xxxxxxxxx

集群配置

clickhouse:
  url: jdbc:clickhouse://ip1:port,ip2:port,ip3:port/xxxx
  username: xxxx
  password: xxxxxxxxx

注:如果存在查询本地表,且本地表只建在某个单节点,使用集群模式查询会报错,表不存在。

3.创建连接

   //单节点连接 
   public ClickHouseConnection getConn() {
        ClickHouseProperties properties = new ClickHouseProperties();
        properties.setUser(username);
        properties.setPassword(password);
        //properties.setSocketTimeout();
        ClickHouseDataSource clickHouseDataSource = new ClickHouseDataSource(url,properties);
        try {
            return clickHouseDataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }



    //集群模式
    public ClickHouseConnection getConns() throws SQLException {
        ClickHouseProperties properties = new ClickHouseProperties();
        properties.setUser(username);
        properties.setPassword(password);
        properties.setSocketTimeout(Integer.MAX_VALUE);
        properties.setMaxQuerySize(Long.MAX_VALUE);
        properties.setConnectionTimeout(10 * 60 * 1000);
        BalancedClickhouseDataSource clickhouseDataSource = new BalancedClickhouseDataSource(url, properties);
        return clickhouseDataSource.getConnection();
    }

4.查询ck

        Connection connection = clickhouseConfig.getConn();
        Statement statement = connection.createStatement();
        ResultSet results = statement.executeQuery(sql);
        ResultSetMetaData rsmd = results.getMetaData();
        if(resultSet != null){
           ResultSetMetaData rsmd = resultSet.getMetaData();
           while(resultSet.next()){
                String cl1= resultSet.getString(rsmd.getColumnName(1));
                String cl2= resultSet.getString(rsmd.getColumnName(2));
                String cl3= resultSet.getString(rsmd.getColumnName(3));
           }
        }

bitmap查询

            ClickHouseConnection connection = clickhouseDataSource.getConnection();
            ClickHouseStatement statement = connection.createStatement();
            ClickHouseRowBinaryInputStream rowBinaryInputStream =  statement.executeQueryClickhouseRowBinaryStream(sql);
            ClickHouseBitmap bitmap = rowBinaryInputStream.readBitmap(ClickHouseDataType.Int32);
            RoaringBitmap roaringBitmap = (RoaringBitmap) bitmap.unwrap();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值