8.1 SQL on Spark[1]

AMPLab将大数据分析负载分为三大类型:批量数据处理、交互式查询、实时流处理,而其中很重要的一环便是交互式查询。大数据分析栈中需要满足用户ad-hoc、reporting、iterative等类型的查询需求,需要提供SQL接口来兼容原有数据库用户的使用习惯,同时需要SQL能够重组关系模式。完成这些重要的SQL任务的便是Spark SQL和Shark这两个开源分布式大数据查询引擎,它们可以理解为轻量级Hive SQL在Spark上的实现,业界将该类技术统称为SQL on Hadoop。

在刚刚结束的Spark Summit 2014上,Databricks宣布不再支持Shark的开发,全力以赴开发Shark的下一代技术Spark SQL,同时Hive社区也启动了Hive on Spark项目,将Spark作为Hive除MapReduce和Tez之外的新执行引擎。根据伯克利的Big Data Benchmark测试对比数据,Shark的In Memory性能可以达到Hive的100倍,即使是On Disk,也能达到10倍的性能提升,是Hive强有力的替代解决方案。而作为Shark进化版本的Spark SQL,在AMPLab最新的测试中,性能已经超过Shark。在本文中,统称Spark SQL、Shark和Hive on Spark为SQL on Spark。虽然Shark不再开发,但其架构和优化仍有借鉴意义,因此也会在文章中有所介绍。图8-1展示了Spark SQL和Hive on Spark是新的发展方向。

8.1 SQL on Spark[1] - 图1

图8-1 Spark SQL和Hive on Spark是新的发展方向

[1] 参考文章:高彦杰,陈冠诚所写的《Spark SQL:基于内存的大数据分析引擎》,《程序员》,2014.8。