查看其它 1 个回答rein07的回答

rein07rein07  系统架构师 , 某证券

多维查询场景需求越来越多,但合适的查询引擎却不太多,如HBase比较适合特定维度的查询, Hive和Spark比较偏重于离线分析场景,Impala在小数据量下进行多维查询效果还不错,但是在大数据量下效率大打折扣。可选的引擎并不多,经过实践经验,以下几种可以做个参考:
1) Kylin
Kylin采用预计算的方式实现多个Cube,多维查询语句经过解析后最终会落到某个Cube中查询,是典型的空间换时间的策略。这种方案的好处是基于Kylin的查询效率极高,缺点是需要定期构建,时效性较差。
2) Elasticsearch
Elasticsearch也是列式存储,核心原理是倒排索引,所以查询效率非常高,多维度查询性能损失并不是很大,缺点是SQL支持不好,官方在6.3后开始支持SQL,但是某些查询仍然受限。所以对于简单的多维度查询,使用Elasticsearch比较适合,而复杂的查询(如多表嵌套、字段的各种函数式处理)暂时还不太合适。
3) Druid
Druid的思路有点像Kylin Cube预计算和倒排索引两个思想的结合(Kylin底层使用HBase存储),查询效率也很不错。
以上几种方案不是多维查询中唯一的选择,也不是哪一种方案就一定适合所有的查询场景,最终还是要以数据实际情况选择合适的引擎。

证券 · 2018-10-19
浏览1400

回答者

rein07
系统架构师某证券
擅长领域: 人工智能大数据机器学习

rein07 最近回答过的问题

回答状态

  • 发布时间:2018-10-19
  • 关注会员:2 人
  • 回答浏览:1400
  • X社区推广