- Spark SQL入门与实践指南
- 纪涵
- 2105字
- 2025-02-17 21:45:55
前言
我们处于一个数据爆炸的时代!
大量涌现的智能手机、平板、可穿戴设备及物联网设备每时每刻都在产生新的数据,然而带来革命性变革的并非海量数据本身,而是我们如何从这些数据中挖掘到有价值的信息,来辅助我们做出更加智能的决策。我们知道,在生产环境下,所谓的大数据往往是由数千万条、上亿条具有多个预定义字段的数据单元组成的数据集,是不是很像传统关系型数据库的二维数据表呢?那么我们是否也能找到一个像SQL查询那样简便的工具来高效地分析处理大数据领域中的海量结构化数据呢?没错,这个工具就是Spark SQL。
Spark SQL是Spark用来操作结构化数据的高级模块,在程序中通过引入Spark SQL模块,我们便可以像从前在关系型数据库利用SQL(结构化查询语言)分析关系型数据库表一样简单快捷地在Spark大数据分析平台上对海量结构化数据进行快速分析,而Spark平台屏蔽了底层分布式存储、计算、通信的细节以及作业解析、调度的细节,使我们开发者仅需关注如何利用SQL进行数据分析的程序逻辑就可以方便地操控集群来分析我们的数据。
本书内容
本书共分为四篇:入门篇、基础篇、实践篇、调优篇,所有代码均采用简洁而优雅的Scala语言编写,Spark框架也是使用Scala语言编写的。
第一部分 入门篇(第1、2章)
第1章简要介绍Spark的诞生、Spark SQL的发展历史以及Spark SQL的用处等内容,使读者快速了解Spark SQL背景知识,为以后的学习奠定基础。
第2章通过讲解Spark SQL开发环境的搭建、Spark作业的打包提交、常见问题的解答,并结合大量图示,使读者快速掌握开发环境的搭建以及提交应用程序到集群上,为后面章节的学习奠定坚实的基础。
第二部分 基础篇(第3、4、5、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模块来编程的主要步骤,例如,从结构化数据源中创建DataFrames、DataFrames基本操作以及执行SQL查询等。
第5、6章属于Spark SQL编程的进阶内容,也是我们将Spark SQL应用于生产、科研计算环境下,真正开始分析多类数据源、实现各种复杂业务需求必须要掌握的知识。在第5章里,我们以包含简单且典型的学生信息表的JSON文件作为数据源,深入对DataFrame丰富强大的API进行研究,以操作讲解加示例的形式包揽了DataFrame中每一个常用的行动、转化操作,进而帮助读者轻松高效地组合使用DataFrame所提供的API来实现业务需求。在第6章里,介绍了Spark SQL可处理的各种数据源,包括Hive表、JSON和Parquet文件等,从广度上使读者了解Spark SQL在大数据领域对典型结构化数据源的皆可处理性,从而使读者真正在工作中掌握一门结构化数据的分析利器。
第三部分 实践篇(第7、8章)
第7章通过讲解大型商业实例项目(基于WiFi探针的商业大数据分析技术)的功能需求、系统架构、功能设计、数据库结构来帮助读者理解如何在实际开发中应用Spark SQL来处理结构化数据,加强读者的工程思维,同时为第8章的学习做好铺垫。
第8章通过讲解分布式环境搭建以及项目代码的解析来帮助读者进一步理解Spark SQL应用程序的执行过程,在后一部分介绍了Spark SQL程序的远程调试方法和Spark的Web界面,帮助读者更加方便地了解程序的运行状态。
第四部分 调优篇(第9章)
调优篇由第9章组成,本篇从Spark的执行流程到内存以及任务的划分,再到Spark应用程序的编写技巧,接着到Spark本身的调优,最后引出数据倾斜的解决思路,层层递进,逐步解析Spark的调优思想。最后以对Spark执行引擎Tungsten与Spark SQL的解析引擎Catalyst的介绍作为本部分的结尾。笔者将在本篇中带领读者掌握Spark的调优方式以及思想,让Spark程序再快一点。
本书适合读者
本书适合于学习数据挖掘、有海量结构化数据分析需求的大数据从业者及爱好者阅读,也可以作为高等院校相关专业的教材。建议在学习本书内容的过程中,理论联系实际,独立进行一些代码的编写,采取开放式的实验方法,即读者自行准备实验数据和实验环境,解决实际问题,最终达到理论联系实际的目的。
本书在写作过程中得到了家人以及本书编辑的大力支持,在此对他们一并表示感谢。
本书由纪涵(主要负责基础篇的编写)主笔,其他参与著作的还有靖晓文(主要负责实践篇的编写)、赵政达(主要负责入门篇、调优篇的编写),排名不分先后。
纪涵
2018年2月