大数据学习:Spark SQL入门简介
在大数据学习当中,Spark框架所占的比重,还是非常高的。Hadoop和Spark基本上是大数据开发学习当中的重点内容,而Spark随着市场地位的不断提升,在学习阶段也得到更多的重视。今天的大数据学习分享,我们来对Spark当中的Spark SQL做个入门介绍。
Spark SQL是Spark生态圈当中的重要一员,甚至有坊间时有传言“Spark SQL将取代Apache Hive”,那么具体到底如何呢?
Spark SQL简介
事实上,Spark SQL的由来是在前代框架的基础上继承其优点而来的。这就不得不提到Shark和Hive两个组件了。
在第一代大数据技术框架Hadoop生态圈当中,为了降低使用MapReduce的难度,Hive出现了。作为当时唯一运行在hadoop上的SQL-on-Hadoop工具,Hive工具在使用当中,MapReduce计算模式I/O消耗极大,运行效率也比较低。
为了提升SQL-on-Hadoop的效率,于是就有了更多的工具产生,包括MapR的Drill、Cloudera的Impala、Shark。
这其中,Shark可以说就是Spark SQL的前身。Shark基于Hive进行了改进,比如引入缓存管理,改进和优化执行器等。Shark基于Spark引擎运行,使得SQL查询的速度得到10-100倍的提升。
后来,鉴于Shark对于hive的太多依赖,制约了Spark各个组件的相互集成,于是提出了Spark SQL项目。
SparkSQL抛弃原有Shark的代码,汲取了Shark的一些优点,如内存列存储(In-Memory Columnar Storage)、Hive兼容性等,重新开发了Spark SQL代码。
Spark SQL特点
1)引入新的RDD类型SchemaRDD,可以像传统数据库定义表一样来定义SchemaRDD。
2)在应用程序中可以混合使用不同来源的数据,如可以将来自HiveQL的数据和来自SQL的数据进行Join操作。
3)内嵌了查询优化框架,在把SQL解析成逻辑执行计划之后,最后变成RDD的计算。
关于RDD、DataFrame、DataSet
在其后的发展当中,Spark SQL仍在不断优化,比较典型的就是RDD、DataFrame、DataSet概念的发展。
最初Spark使用RDD,但是SQL化的支持不太好;后来演变成DataFrame,类型转又不太安全;最后发展成DataSet兼容两者的优点。
RDD
RDD本身也叫做Resilient Distributed Dataset,即弹性分布式数据集。是Spark中最底层的数据抽象,只包含数据,不包含结构信息。需要反序列化才能知道内部存储的什么。
DataFrame
DataFrame除了数据本身,还记录了元数据信息,标识了每一列的字段类型和名称。相当于是RDD+Schema信息。
DataSet
Spark最顶层的数据抽象,不仅包含数据还包含schema信息,又能兼顾java对象格式。当DataSet中存储的是Row时,就是DataFrame。
今天的大数据学习分享,Spark SQL入门,以上就为大家做了一个简单的介绍了。大数据学习当中,Spark是重点部分,接下来我们也会继续对Spark生态圈的各个组件去逐一做介绍。
成都加米谷学院
个人技能提升 丨 企业内训提升
成都高新区吉泰一街国际科技节能大厦B座23层