1. Spark SQL的前世今生
- Shark是一个为Spark设计的大规模数据仓库系统, 它与Hive兼容. Shark建立在Hive的代码基础上, 并通过将Hive的部分物理执行计划交换出来.
- 这个方法使得Shark的用户可以加速Hive的查询, 但是Shark继承了Hive的大且复杂的代码, 使得Shark很难优化和维护, 同时Shark依赖于Spark的版本.
- 随着我们遇到了性能优化的上限, 以及集成SQL的一些复杂的分析功能, 我们发现Hive的MapReduce设计的框架限制了Shark的发展.
- 在2014年7月1日的Spark Summit上, Databricks宣布终止对Shark的开发, 将重点放到SparkSql上.
2. 什么是Spark SQL
- SparkSql是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame, SparkSql是分布式SQL查询引擎.
- 相比Spark RDD API, SparkSql包含了对结构化数据和在其上运算的更多信息, SparkSql使用这些信息进行了额外的优化, 使对结构化数据的操作更加高效和方便.
- 有更多方式去使用SparkSql, 包括SQL, DataFrames API
3. Spark SQL优势和特点
- 我们已经学习了Hive, 它是将Hive Sql转换为MapReduce然后提交到集群中执行, 大大简化了编写MR程序的复杂性.
- Spark SQL是将Spark SQL转换为RDD, 然后提交到集群中去运行,执行效率非常快.
Spark SQL有如下特点:
- 易整合
将sql查询与Spark程序无缝混合, 可以使用java, scala, python, R等语言的API操作. - 统一的数据访问
以相同的方式连接到任何数据源. - 兼容Hive
支持HiveSql的语法 - 标准的数据连接
可以使用行业标准的JDBC或ODBC连接.