购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 Spark SQL简介

本节主要介绍什么是Spark SQL,以及Spark SQL的特点。

1.1.1 什么是Spark SQL

Spark自诞生之后,越来越受到人们的喜爱,使用Spark的人也越来越多。突然有一天,一部分技术专家产生了一个大胆的想法:Hadoop上面有Hive,Hive能把SQL转换成MapReduce作业,这非常地方便,但Spark这么好用的系统却没有配备类似Hive这样的工具,要不我们也创造一个这样的工具吧!于是Shark被提了出来,它将SQL语句转换成RDD(Resilient Distributed Dataset,弹性分布式数据集)来执行。这就仿照了Hadoop生态圈,做出了一个Spark版本的“Hive”。有了Shark工具之后,人们也能愉快地使用SQL对数据进行查询分析了,这大大提高了程序的编写效率。Shark的架构示意图如图1-1所示。

图1-1 Shark框架示意图

随着越来越多的人使用Shark以及其版本的不断更新,人们发现Shark具有一定的局限性。细心的读者会发现,在图1-1所示的Shark框架中,使用了HiveQL Parser这一模块。这样一来Shark对Hive有了依赖,导致在添加一些新的功能或者修改一些东西时特别不方便。这样Shark的发展就受到了严重的限制。

由于Shark具有这样的一些弊端,因此在2014年左右人们决定终止Shark这个项目,并将精力转移到Spark SQL的研发当中去。之后一个新的SQL引擎——Spark SQL就诞生了。

Spark SQL是用于结构化数据(Structured Data)处理的Spark模块。与基本的Spark RDD API不同,Spark SQL的抽象数据类型为Spark提供了关于数据结构和正在执行的计算的更多信息。在内部,Spark SQL使用这些额外的信息去做一些优化。

有多种方式可以与Spark SQL进行交互,比如SQL和Dataset API。当进行计算时,这些接口使用相同的执行引擎,不依赖正在使用哪种API或者语言。这种统一也就意味着开发者可以很容易地在不同的API之间进行切换,这些API提供了最自然的方式来表达给定的转换。

Hive是将Hive SQL转换成MapReduce,然后提交到集群上执行,虽然大大简化了编写MapReduce程序的复杂性,但MapReduce这种计算模型的执行效率比较低。而Spark SQL是将SQL语句转换成RDD,然后提交到集群上执行,执行效率非常高。

Spark SQL提供了以下两个编程抽象,类似Spark Core中的RDD。

●DataFrame。

●DataSet。

1.1.2 Spark SQL的特点

Spark SQL具有以下特点:

1)Integrated(易于整合)

Spark SQL无缝地整合了SQL查询和Spark编程,如图1-2所示。

图1-2 Spark SQL的特点——Integrated

2)Uniform Data Access(统一的数据访问方式)

Spark SQL使用相同的方式连接不同的数据源,如图1-3所示。

图1-3 Spark SQL的特点——Uniform Data Access

3)Hive Integration(集成Hive)

Spark SQL在已有的仓库上直接运行SQL或者HiveQL,如图1-4所示。

图1-4 Spark SQL的特点——Hive Integration

4)Standard Connectivity(标准的连接方式)

Spark SQL通过JDBC或者ODBC来连接,如图1-5所示。

图1-5 Spark SQL的特点——Standard Connectivity V/7Wq6yNq1JbWKLwrUBJwy+HZcmZ/6RUqEgJcLLpef1zYE85L62+MXQbLQDskG/M

点击中间区域
呼出菜单
上一章
目录
下一章
×