vlambda博客
学习文章列表

大数据学习:Spark SQL入门简介

在大数据学习当中,Spark框架所占的比重,还是非常高的。HadoopSpark基本上是大数据开发学习当中的重点内容,而Spark随着市场地位的不断提升,在学习阶段也得到更多的重视。今天的大数据学习分享,我们来对Spark当中的Spark SQL做个入门介绍。

 


Spark SQLSpark生态圈当中的重要一员,甚至有坊间时有传言“Spark SQL将取代Apache Hive”,那么具体到底如何呢?

 

Spark SQL简介

 

事实上,Spark SQL的由来是在前代框架的基础上继承其优点而来的。这就不得不提到SharkHive两个组件了。

 

在第一代大数据技术框架Hadoop生态圈当中,为了降低使用MapReduce的难度,Hive出现了。作为当时唯一运行在hadoop上的SQL-on-Hadoop工具Hive工具在使用当中,MapReduce计算模式I/O消耗极大,运行效率也比较低

 

为了提升SQL-on-Hadoop的效率,于是就有了更多的工具产生,包括MapRDrillClouderaImpalaShark

 

大数据学习:Spark SQL入门简介


这其中,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的计算。

 


关于RDDDataFrameDataSet

 

在其后的发展当中,Spark SQL仍在不断优化,比较典型的就是RDDDataFrameDataSet概念的发展。

 

最初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层