presto、druid、sparkSQL、kylin的对比分析,如性能、架构等,有什么异同?

在实际应用中如何选型?
关注者
960
被浏览
191,635
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

简单说几句。

1. kylin 预计算。用户指定dimensions和要计算的metric,kylin通过MR将结果保存在HBase中,后续读取直接读HBase。适合那种业务清楚的知道自己要分析什么的场景。查询模式比较固定,只不过所查看的时间不同的场景。注意的点是要避免维度灾难。

2. presto java8写的,代码质量非常高。设计:纯内存,没有容错,一个task失败就整个query fail。需要注意调整内存相关,线程数等参数,容易OOM。benchmark还行。支持标准SQL

3. spark sql 个人觉得支持查询Hive的数据,支持HQL非常重要,因为很多公司以前的数据都是放在Hive上的。我们测试了spark sql 2.0.1,对于鄙司这种分区数很多,每个分区很多parquet文件的情形来说,几乎不可用,原因在于

[SPARK-16980] Load only catalog table partition metadata required to answer a query

转而测试spark sql 2.1.0, 结果还是比较满意的。不过容错性还有待检验,benchmark过程中如果个别task失败,job 有时候会hang住,待分析。

其他没用过不评价。

总体来说,至少从我们的benchmark结果来看,spark sql 很有前景。