1.4.3 Spark SQL的开发步骤

在了解Spark SQL的开发步骤之前,读者需要了解Spark SQL的运行流程,如图1-6所示。

图1-2 Spark SQL的运行流程

流程中,首先把数据加载到Spark SQL中,然后通过Spark SQL进行数据处理,最后把处理后的数据输出到对应的输出源中。Spark SQL的开发步骤如下。

1.数据源确定

思考数据源有哪些类型,有多少个数据源。Spark SQL支持非常多的数据源类型,如Hive、JSON、TXT等,也支持以JDBC的方式从关系数据库中读取数据。

2.数据类型映射

思考数据类型映射的问题。在关系数据库中,通过定义的表结构及字段的类型来进行映射,而在Spark SQL中该如何映射?本书后面会详细讲解这个问题。

3.加载数据

加载数据时,Spark SQL需要组织这些数据,并进行数据的映射。实际上,在Spark SQL中基于RDD封装了DataFrame和DataSet抽象模型。它们不仅可以存放数据,而且还保存了这些数据的Schema信息。它们和数据库的表类似,数据是按照行来存储的,而Schema记录着每一行数据属于哪个字段。因此,加载数据的过程本质就是构建DataFrame或DataSet的过程。

4.数据处理

有了DataFrame或DataSet后,就可以基于它们对数据进行处理了。它们提供了非常多的有用的方法来对数据进行处理,本书在后面会讲到。

5.数据输出

数据处理完后,需要对处理后的数据进行输出。读者可以通过Spark SQL将数据按相应格式输出到指定位置,如将数据以文本格式输出到HDFS上。

DataFrame和DataSet都是Spark SQL的抽象模型。在实际开发过程中,读者可以选择其中一种抽象模型来对数据进行操作。需要注意,DataSet是DataFrame API的一个扩展,是Spark SQL的一个新的数据抽象。本书将在后续章节中分别介绍它们。