描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302496700
目 录
第一部分 入门篇
第1章 初识Spark SQL 3
1.1
Spark SQL的前世今生 3
1.2
Spark SQL能做什么 4
第2章 Spark安装、编程环境搭建以及打包提交 6
2.1
Spark的简易安装 6
2.2 准备编写Spark应用程序的IDEA环境 10
2.3 将编写好的Spark应用程序打包成jar提交到Spark上 18
第二部分 基础篇
第3章 Spark上的RDD编程 23
3.1
RDD基础 24
3.1.1
创建RDD 24
3.1.2
RDD转化操作、行动操作 24
3.1.3
惰性求值 25
3.1.4
RDD缓存概述 26
3.1.5
RDD基本编程步骤 26
3.2
RDD简单实例—wordcount 27
3.3 创建RDD 28
3.3.1
程序内部数据作为数据源 28
3.3.2
外部数据源 29
3.4
RDD操作 33
3.4.1
转化操作 34
3.4.2
行动操作 37
3.4.3
惰性求值 38
3.5 向Spark传递函数 39
3.5.1
传入匿名函数 39
3.5.2
传入静态方法和传入方法的引用 40
3.5.3
闭包的理解 41
3.5.4
关于向Spark传递函数与闭包的总结 42
3.6 常见的转化操作和行动操作
42
3.6.1
基本RDD转化操作 43
3.6.2
基本RDD行动操作 48
3.6.3
键值对RDD 52
3.6.4
不同类型RDD之间的转换 56
3.7 深入理解RDD 57
3.8
RDD 缓存、持久化 59
3.8.1
RDD缓存 59
3.8.2
RDD持久化 61
3.8.3
持久化存储等级选取策略 63
3.9
RDD checkpoint容错机制 64
第4章 Spark SQL编程入门 66
4.1
Spark SQL概述 66
4.1.1
Spark SQL是什么 66
4.1.2
Spark SQL通过什么来实现 66
4.1.3
Spark SQL 处理数据的优势 67
4.1.4
Spark SQL数据核心抽象——DataFrame 67
4.2 Spark
SQL编程入门示例 69
4.2.1
程序主入口:SparkSession 69
4.2.2
创建 DataFrame 70
4.2.3
DataFrame基本操作 70
4.2.4
执行SQL查询 72
4.2.5
全局临时表 73
4.2.6
Dataset 73
4.2.7
将RDDs转化为DataFrame 75
4.2.8
用户自定义函数 78
第5章 Spark SQL的DataFrame操作大全 82
5.1 由JSON文件生成所需的DataFrame对象 82
5.2
DataFrame上的行动操作 84
5.3
DataFrame上的转化操作 91
5.3.1
where条件相关 92
5.3.2
查询指定列 94
5.3.3
思维开拓:Column的巧妙应用 99
5.3.4
limit操作 102
5.3.5
排序操作:order by和sort 103
5.3.6
group by操作 106
5.3.7
distinct、dropDuplicates去重操作 107
5.3.8
聚合操作 109
5.3.9
union合并操作 110
5.3.10
join操作 111
5.3.11
获取指定字段统计信息 114
5.3.12
获取两个DataFrame中共有的记录 116
5.3.13
获取一个DataFrame中有另一个DataFrame中没有的记录 116
5.3.14
操作字段名 117
5.3.15
处理空值列 118
第6章 Spark SQL支持的多种数据源 121
6.1 概述 121
6.1.1
通用load/save 函数 121
6.1.2
手动指定选项 123
6.1.3
在文件上直接进行SQL查询 123
6.1.4
存储模式 123
6.1.5
持久化到表 124
6.1.6
bucket、排序、分区操作 124
6.2 典型结构化数据源 125
6.2.1
Parquet 文件 125
6.2.2
JSON 数据集 129
6.2.3
Hive表 130
6.2.4
其他数据库中的数据表 133
第三部分 实践篇
第7章 Spark SQL 工程实战之基于WiFi探针的商业大数据分析技术
139
7.1 功能需求 139
7.1.1
数据收集 139
7.1.2
数据清洗 140
7.1.3
客流数据分析 141
7.1.4
数据导出 142
7.2 系统架构 142
7.3 功能设计 143
7.4 数据库结构 144
7.5 本章小结 144
第8章 第一个Spark SQL应用程序 145
8.1 完全分布式环境搭建 145
8.1.1
Java 环境配置 145
8.1.2
Hadoop 安装配置 146
8.1.3
Spark安装配置 149
8.2 数据清洗 150
8.3 数据处理流程 153
8.4 Spark程序远程调试 164
8.4.1
导出jar包 164
8.4.2
IDEA配置 168
8.4.3
服务端配置 170
8.5
Spark的Web界面 171
8.6 本章小结 172
第四部分 优化篇
第9章 让Spark程序再快一点 175
9.1
Spark执行流程 175
9.2
Spark内存简介 176
9.3
Spark的一些概念 177
9.4
Spark编程四大守则 178
9.5
Spark调优七式 183
9.6 解决数据倾斜问题 192
9.7
Spark 执行引擎 Tungsten 简介 195
9.8
Spark SQL解析引擎Catalyst 简介 197
9.9 本章小结 200
前 言
我们处于一个数据爆炸的时代!
大量涌现的智能手机、平板、可穿戴设备及物联网设备每时每刻都在产生新的数据,然而带来革命性变革的并非海量数据本身,而是我们如何从这些数据中挖掘到有价值的信息,来辅助我们做出更加智能的决策。我们知道,在生产环境下,所谓的大数据往往是由数千万条、上亿条具有多个预定义字段的数据单元组成的数据集,是不是很像传统关系型数据库的二维数据表呢?那么我们是否也能找到一个像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月
评论
还没有评论。