早期,Hadoop中的SQL工具只有Hive,鉴于性能考虑,加州大学伯克利分校曾经尝试修改 Apache Hive 以使其运行在 Spark上,当时的项目叫作 Shark(也就是Hive On Spark),使用Hive的SQL解析,然后将HQL翻译成RDD,和Hive兼容。
2014年7月,Databricks宣布终止Shark开发,转到SparkSQL上,SparkSQL将涵盖Shark所有特性。SparkSQL现在可以访问Hive/Json/RDBMS/Parquet/CSV等。SparkSQL中有ThriftServer服务,类似HiveServer2服务,底层执行成了Spark。
SparkSQL底层运行是RDD(Hive底层是MapReduce)。SparkSQL是Spark的一个用于处理结构化数据的模块(module),可以访问Hive、Json等。
SparkSQL是代替了Hive,访问Hive数据不需要Hive的server2服务了,但是SparkSQL实现了Hive的90%的功能,还有一些功能未实现,例如导入数据,据说不能使用load data local inpath的方式,只能先上传到HDFS上使用去掉local的方式。