下面是这几天来我对于hive on mr/hive on spark /impala / presto/ spark-sql 做的调研之后做的总结,见以下矩阵:
武器库 | 优点 | 缺点 | Hive Sql支持度 | UDF支持 |
hive on mr | ~ | 慢 | 全部 | 支持 |
hive on spark | ~ | 较慢 | 全部 | 支持 |
impala | 快 | 对于大表需事先对表COMPUTE | 对于多count(distinct)语句需要改写 | 支持 |
presto | 数据量小的表可以秒查 | 对于数据量大的表基本上跑不了 | 支持主流Hive Sql | 不支持 |
spark-sql | 较快 | 可能会不稳定 | 全部 | 支持 |
其他总结:
1.presto在执行执行简单sql、无关联表、表不是很大的情况下有秒查优势;
1.presto在执行执行简单sql、无关联表、表不是很大的情况下有秒查优势;
目前看来若要处理实时统计任务/在线查询采用presto是比较合适的;
在有多个大表关联的sql中不建议采用presto执行。
在有多个大表关联的sql中不建议采用presto执行。
2.impala不可以在一条语句中执行 count distinct,如需要务必将其拆开成多条语句;
impala在并行执行多条sql的时候延迟会大;
impala在并行执行多条sql的时候延迟会大;
impala处理连续任务或者大表任务依旧是我们现在采用的impala比较合适;
3.hive/hive on spark/spark sql 批量查询;
hive/hive on spark 使用方便;
spark sql 可以继续调优参数,而hive on spark的参数设置没有前者灵活 。