1、Spark SQL的前身是Shark。
为了给熟悉RDBMS(关系型数据库)但又不理解MapReduce的技术人员,提供快速上手的工具,Hive应运而生,它是当时唯一运行在Hadoop上的SQL-on-Hadoop工具。但是MapReduce计算过程中大量的中间磁盘落地过程消耗了大量的I/O,降低的运行效率,为了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具开始产生,其中表现较为突出的是:
(1)MapR的Drill
(2)Cloudera的Impala
(3)Shark
2、SparkSQL摆脱了对Hive的依赖性
Shark对于Hive的太多依赖(如采用Hive的语法解析器、查询优化器等等),但SparkSQL摆脱了对Hive的依赖性,无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便。
(1)数据兼容方面 不但兼容Hive,还可以从RDD、parquet文件、JSON文件中获取数据,未来版本甚至支持获取RDBMS数据以及cassandra等NOSQL数据;
(2)性能优化方面 除了采取In-Memory Columnar Storage、byte-code generation等优化技术外、将会引进Cost Model对查询进行动态评估、获取最佳物理计划等等;
(3)组件扩展方面 无论是SQL的语法解析器、分析器还是优化器都可以重新定义,进行扩展;