ClickHouse的java代码实现⽂章⽬录
前⾔
ClickHouse是⼀个⽤于联机分析(OLAP)的列式数据库管理系统(DBMS)。
⼀、ClickHouse是什么?
⼆、使⽤步骤
1.引⼊ClickHouse依赖
在项⽬的l⽂件中加⼊ClickHouse的依赖:
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.1.52</version>
</dependency>
2.编写查询代码
代码如下:
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
javabean是干嘛的try{
// 注册驱动,注意这⾥使⽤反射⽅式注册,需要给出全类名
Class<?> aClass = Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
ClickHouseProperties properties =new ClickHouseProperties();
properties.setUser("default");// ⽤户名
properties.setPassword("******");// 密码
// 查询时间如果过长,这⾥设置超时时间即可解决超时的报错问题
// properties.setSocketTimeout(300000);
// 官⽅提供的负载均衡⽅法
BalancedClickhouseDataSource dataSource =new BalancedClickhouseDataSource("jdbc:clickhouse://10.100.*.100:8123,10.100.*.101:8123,10.100.*.11 0:8123,10.100.*.111:8123,10.100.*.120:8123,10.100.*.121:8123/default", properties);
connection = Connection();
// 创建执⾏sql语句的statement对象
statement = ateStatement();
resultSet = uteQuery("select login_id,toDateTime64(receive_time,3, 'Asia/Shanghai') as receive_time,total_worktime from default.ch_user _cluster where login_id = '*****' and receive_time >= toDateTime64('2021-01-24 00:00:00.000', 3, 'Asia/Shanghai')\n"+
"and receive_time < toDateTime64('2021-01-25 00:00:00.000', 3, 'Asia/Shanghai')");
// 处理结果数据,如果使⽤dbutils,传⼊⼀个javabean,直接可以得到⼀个javabean数组
()){
Bo bo =new Bo();
bo.setReceive_Timestamp("receive_time"));
bo.setTotal_Double("total_worktime"));
fuelList.add(bo);
}
}catch(Exception e){
e.printStackTrace();
}finally{
/
/ 关流
try{
if(resultSet != null){
resultSet.close();
}
if(statement != null){
statement.close();
}
if(connection != null){
connection.close();
}
}catch(SQLException throwables){
throwables.printStackTrace();
}
}
总结
这是简单的ClickHouse查询java代码的实现,本⽂采⽤的是官⽅提供的负载均衡⽅式,最好是结合Nginx使⽤, 只需要配置⼀个nginx服务,并且配置对应的clickhouse地址,对外就是nginx地址即可,其有多种负载算法,轮询、权重等⽅式,⽀持多种请求策略、⾃动故障转移,扩容新增节点只需要修改其配置即可。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论