基本概述
概念
它是Spark生态系统中专门处理结构化数据的模块。
SparkSQL与SparkCore数据对比
SparkCore
优缺点:
优点:灵活,可以使用底层的API完成很复杂的业务
缺点:有一定的学习成本/入门门槛
SparkSQL
对于一些数据科学家/数据库管理员/DBA,要求他们为了做一个非常简单的查询,写一大堆代码,明显是一件非常麻烦的事情,所以使用常见的SQL很方便。
优缺点:
优点:入门门槛低,只要会英文单词/简单语法规则就可以写
缺点:只能做一些简单的业务,复杂业务实现起来较困难
注:SparkSQL也支持像SparkCore一样对数据的操作,具体的由我们接下来学习。
SparkSQL的诞生和发展历史
- 在Spark1.0之前:没有SparkSQL,有一个开源项目shark底层使用Spark作为Hive的执行引擎。
- Spark1.0时: Spark自己开发了新的组件:SparkSQL,使用SchemaRDD(带约束的RDD)对RDD进行封装,用来表示带有约束的RDD
- Spark1.3时: SparkSQL开发了新的数据抽象:DataFrame:底层实现了RDD的大部分功能,并增加了SQL操作,不再强依赖RDD,但不支持泛型
- Spark1.6时: SparkSQL开发了新的数据抽象:DataSet:支持泛型
- Spark2.0时:统一了DataFrame和DataSet: DataSet[Row]= DataFrame,且增加了新的组件:StructuredStreaming支持SQL处理流数据
注:
- SparkSQL发展历史较为曲折,走了很多弯路,但也都是必须要的,因为要兼容其他语言。
- 尽管SparkSQL的API很多(且支持很多编程语言),但是使用起来很友好,底层也都做了很多的性能优化。