Hive-之即席查询引擎选型
1 背景
为什么需要使用到即席查询的数据表,这个取决于数仓的上层应用于数仓的规模,通常如果需要给Hive的上层服务提供快速响应,那么即席查询是必不可少的数仓组件,常见的即席查询组件有以下。
- Druid
- Kylin
- Presto
- Impala
- Spark SQL
- ES
2 各种即席查询引擎的功能对比
对比点 | Duird | Kylin | Presto | Impala | SparkSQL | ES |
---|---|---|---|---|---|---|
亚秒级响应 | Y | Y | N | N | N | N |
百亿级数据集 | Y | Y | Y | Y | Y | Y |
SQL支持 | N(ing) | Y | Y | Y | N | N |
离线 | Y | Y | Y | Y | Y | Y |
实时 | Y | N(ing) | N | N | N | Y |
精确去重 | N | Y | Y | Y | N | N |
多表join | N | Y | Y | Y | N | N |
JDBC for BI Report支持 | N | Y | Y | Y | N | N |
1、Druid:是一个实时处理时序数据的OLAP数据库,因为索引首先按照时间分片,查询的时候也是按照时间路线去路由索引。
2、Kylin:核心是cube,cube是一种预计算技术,基本思路是预先对数据作多维的索引,查询时只扫描索引而不访问原始数据从而提速。
3、Presto:它没有使用MR,大部分场景下比Hive快一个量级,其中的关键是所有的处理都在内存中完成,支。
4、Impala:基于内存运算,速度快,支持的数据源没有presto多。
5、SparkSQL:基于Spark平台的OLAP框架,基本思路是增加机器并行计算,从而提高查询速度。
6、ES:使用分词和倒排索引实现快速查询,ES在资源获取和聚集用的资源比Druid高。
3 框架选型
3.1 从超大量数据集查询效率
Druid > Kylin > Presto > SparkSQL
3.2 数据源多样性支持
Presto > SparkSQL > Kylin > Druid