Druid JDBC API和其他OLAP分析框架对比
一、Druid JDBC API
在大数据处理场景中,我们可以编写接口来读取Druid中的数据进行聚合操作,以供可视化展示使用。下面使用jdbc的方式来读取Druid中的数据。
1、首先需要在maven项目中导入Druid的依赖
代码语言:javascript复制<dependency>
<groupId>org.apache.calcite.avatica</groupId>
<artifactId>avatica-core</artifactId>
<version>1.15.0</version>
</dependency>
2、编写代码读取Druid中的数据
代码语言:javascript复制/**
* 使用JDBC的方式连接Druid
*/
public class ReadDruidData {
public static void main(String[] args) throws SQLException {
//1.连接Druid
Properties props = new Properties();
Connection conn = DriverManager.getConnection("jdbc:avatica:remote:url=http://node5:8888/druid/v2/sql/avatica/", props);
//2.准备查询语句
PreparedStatement pst = conn.prepareStatement("select loc,item,sum(amount) as total_amount from "druid-topic" group by loc,item");
//3.执行查询获取结果
ResultSet rst = pst.executeQuery();
while(rst.next()){
String loc = rst.getString("loc");
String item = rst.getString("item");
Double totalAmount = rst.getDouble("total_amount");
System.out.println("loc = " loc ",item = " item ",totalAmount = " totalAmount);
}
//4.关闭连接
rst.close();
pst.close();
conn.close();
}
}
二、Druid与其他OLAP分析框架对比
对比项 | Druid | clickhouse | Kylin | HBase | Impala | kudu | presto |
---|---|---|---|---|---|---|---|
聚合亚秒级响应 | Y | Y | Y | N | N | N | N |
SQL支持 | Y | Y | Y | N | Y | N | Y |
离线 | Y | Y | Y | Y | Y | Y | Y |
实时 | Y | Y | Y | N | N | N | N |
精准去重 | N | Y | Y | - | Y | - | Y |
多表join | Y(不建议) | Y | Y | N | Y | N | Y |
JDBC API | Y | Y | Y | Y | Y | Y | Y |
预聚合 | Y | Y | N | N | N | N | N |
预计算 | N | N | Y | N | N | N | N |
基于内存计算 | N | N | N | N | Y | N | Y |
HDFS存储 | Y | N(部分引擎支持) | Y | Y | Y | N | Y |
支持更新 | N (支持Segment批量覆盖更新) | Y | N | Y | N(Kudu 引擎支持) | Y | N |