博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据学习:Spark SQL入门简介
阅读量:4073 次
发布时间:2019-05-25

本文共 1386 字,大约阅读时间需要 4 分钟。

在大数据学习当中,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生态圈的各个组件去逐一做介绍。

转载地址:http://dqkni.baihongyu.com/

你可能感兴趣的文章
Java-IO-java的IO流
查看>>
Java-IO-输入/输出流体系
查看>>
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java IO
查看>>
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>
大数据学习:Spark RDD操作入门
查看>>
大数据框架:Spark 生态实时流计算
查看>>
大数据入门:Hive和Hbase区别对比
查看>>
大数据入门:ZooKeeper工作原理
查看>>
大数据入门:Zookeeper结构体系
查看>>
大数据入门:Spark RDD基础概念
查看>>
大数据入门:SparkCore开发调优原则
查看>>
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>