
第二部分 基础篇
本部分由第3~6章组成,第3章是本书中篇幅最长的一章,同时也是真正开始学习Spark SQL必要的先修课,其中详尽地介绍了Spark框架对数据的核心抽象——RDD(弹性分布式数据集)的方方面面。先介绍与RDD相关的基本概念,例如转化操作、行动操作、惰性求值、缓存,讲解的过程伴随着丰富的示例,旨在提高读者对RDD的理解与加强读者的RDD编程基础。在讲明白RDD中基础内容的同时,又深入地剖析了疑点、难点,例如RDD Lineage(RDD依赖关系图)、向Spark传递函数、对闭包的理解等。在之前对基本类型RDD的学习基础上,又引入了对特殊类RDD——键值对RDD的大致介绍,在键值对RDD介绍中对combineByKey操作的讲解,深入地从代码实现的角度洞悉了Spark分布式计算的实质,旨在帮助对RDD有着浓厚兴趣的读者做进一步的拓展。最后,站在RDD设计者的角度重新审视了RDD缓存、持久化、checkpoint机制,从而诠释了RDD为什么能够很好地适应大数据分析业务的特点,有天然强大的容错性、易恢复性和高效性。
第4章对Spark高级模块——Spark SQL,也就是本书的主题,进行了简明扼要的概述,并讲述了相应的Spark SQL编程基础。先是通过与我们前一章所学的Spark对数据的核心抽象——RDD的对比,引出了Spark SQL中核心的数据抽象——DataFrame,讲解了两者的异同,点明了Spark SQL是针对结构化数据处理的高级模块的原因在于其内置丰富结构信息的数据抽象。后一部分通过丰富的示例讲解了如何利用Spark SQL模块来编程的主要步骤,例如,从结构化数据源中创建DataFrame、DataFrame基本操作以及执行SQL查询等。
第5、6章属于Spark SQL编程的进阶内容,也是我们将Spark SQL应用于生产、科研计算环境下,真正开始分析多类数据源、实现各种复杂业务需求必须要掌握的知识。在第5章里,我们以包含简单且典型的学生信息表的JSON文件作为数据源,深入对DataFrame丰富强大的API进行研究,以操作讲解加示例的形式包揽了DataFrame中每一个常用的行动、转化操作,进而帮助读者轻松高效地组合使用DataFrame所提供的API来实现业务需求。在第6章里,介绍了Spark SQL可处理的各种数据源,包括Hive表、JSON和Parquet文件等,从广度上使读者了解Spark SQL在大数据领域对典型结构化数据源的皆可处理性,从而使读者真正在工作中掌握一门结构化数据的分析利器。