图书简介:
第1章 Spark大数据平台与环境搭建 1
1.1 引言 2
1.2 Spark大数据平台介绍 2
1.2.1 Spark是什么 2
1.2.2 Spark与大数据的应用场景 4
1.2.3 Spark编程环境(Scala) 5
1.2.4 Spark应用程序基本原理 7
1.3 Spark大数据环境搭建 8
1.3.1 Linux操作系统安装和配置 8
1.Ubuntu虚拟机的安装 8
2.Ubuntu基本配置 19
3.vi编辑器 22
4.MobaXterm远程连接工具 24
1.3.2 Hadoop伪分布式集群环境搭建 28
1.JDK的安装与配置 28
2.Linux免密登录 31
3.Hadoop的安装 33
4.HDFS的配置 35
5.YARN的配置 38
6.HDFS和YARN的测试 39
1.3.3 Spark单机运行环境搭建 42
1.Spark的安装与配置 42
2.SparkShell交互式编程环境 44
3.Spark框架的目录结构 46
1.4 Scala核心语法概览 47
1.5 单元训练 50
第2章 Spark RDD离线数据计算 51
2.1 引言 52
2.2 RDD基本原理 52
2.3 RDD编程模型 54
2.4 Spark RDD常用操作 57
2.4.1 RDD的创建 57
1.通过集合元素创建RDD 57
2.通过文本文件创建RDD 60
2.4.2 RDD的转换操作 64
1.map数据转换 64
2.flatMap数据转换 70
3.filter数据筛选 72
4.sortBy数据排序 73
5.distinct数据去重 75
6.union数据合并 76
7.intersection数据交集 77
8.subtract数据差集 78
9.groupBy数据分组 79
10.groupByKey数据分组 80
11.reduceByKey数据归并 81
12.sortByKey数据排序 84
13.keys和values操作 85
14.mapValues和flatMapValues操作 86
2.4.3 RDD的行动操作 88
1.collect操作 88
2.take操作 89
3.first操作 90
4.count/countByValue操作 90
5.max/min/sum/mean操作 91
2.5 Spark RDD数据计算实例 91
2.5.1 词频统计实例 91
2.5.2 基本TopN问题实例 94
2.5.3 用户消费数据处理实例 98
2.6 Spark的文件读/写 101
2.6.1 文本文件的读/写 101
1.textFile读取文本数据 101
2.saveAsTextFile保存到文本文件中 102
2.6.2 SequenceFile文件的读/写 104
2.7 单元训练 105
第3章 Spark SQL离线数据处理 107
3.1 引言 108
3.2 DataFrame基本原理 108
3.3 Spark SQL常用操作 109
3.3.1 DataFrame的基本创建 109
1.使用集合创建DataFrame 109
2.使用CSV文件创建DataFrame 115
3.3.2 DataFrame的查看 117
3.3.3 DataFrame的数据操作(DSL) 121
1.DataFrame的数据查询 122
2.DataFrame的数据处理 128
3.3.4 DataFrame的数据操作(SQL) 135
1.DataFrame视图表的创建 136
2.DataFrame视图表的SQL查询 138
3.4 Spark SQL数据处理实例 147
3.4.1 人口信息统计实例 147
3.4.2 电影评分数据分析实例 150
3.5 DataFrame创建和保存 153
3.5.1 创建DataFrame 154
1.通过JSON文件创建DataFrame 154
2.通过Parquet文件创建DataFrame 155
3.5.2 保存DataFrame 155
3.6 RDD/DataFrame/Dataset类型转换 156
3.7 单元训练 164
第4章 Spark Streaming流数据计算 167
4.1 引言 167
4.2 Spark Streaming基本原理 168
4.3 Spark Streaming词频统计 169
4.3.1 Netcat网络工具测试 169
4.3.2 DStream词频统计 170
4.4 单元训练 172
第5章 Spark编程进阶 173
5.1 引言 174
5.2 搭建Spark应用开发环境 174
5.2.1 Scala编程环境 174
5.2.2 IntelliJ IDEA集成开发环境 176
5.3 理解RDD 190
5.3.1 RDD的基本概念 190
5.3.2 RDD的分区机制 192
5.3.3 RDD的依赖关系 193
1.窄依赖 194
2.宽依赖 194
5.3.4 RDD的计算调度 195
1.Job 195
2.Stage 197
3.Task 198
5.4 RDD缓存机制 201
5.5 广播变量和累加器 203
5.5.1 广播变量 203
5.5.2 累加器 205
5.6 Spark生态和应用架构 208
5.6.1 Spark生态架构 208
1.Spark Core组件 208
2.Spark SQL组件 209
3.Spark Streaming组件 209
4.MLlib组件 209
5.GraphX组件 209
5.6.2 Spark应用架构 210
1.Spark应用的基本原理 210
2.Spark应用程序 210
3.Spark应用程序的运行方式 212
5.7 Spark集群和应用部署 213
5.7.1 Spark伪分布式集群的搭建 213
5.7.2 Spark应用部署模式 219
1.Local模式 219
2.Spark Standalone模式 219
3.Spark on YARN模式 219
5.7.3 Spark应用部署实例 220
1.Local模式 221
2.Spark Standalone模式 222
3.Spark on YARN模式 226
4.Spark应用的部署参数 230
5.8 单元训练 232
第6章 Spark大数据分析项目实例 233
6.1 引言 233
6.2 CentOS7+JDK8虚拟机安装 234
6.3 Hadoop+Spark分布式集群环境 239
6.3.1 Hadoop+Spark Standalone分布式集群环境搭建 239
6.3.2 Hadoop+Spark on YARN分布式集群环境搭建 243
6.4 Spark离线数据处理实例 248
6.4.1 需求分析 248
6.4.2 准备工作 250
1.数据清洗(Pandas) 250
2.窗口操作(Spark SQL) 258
3.数据可视化(pyecharts) 264
6.4.3 美妆商品订单数据分析 268
1.创建Spark项目 268
2.订单数据处理分析 274
3.结果数据保存 284
6.4.4 美妆商品订单数据可视化 286
6.5 Spark数据分析实例部署 290
6.6 单元训练 296
展开
Spark大数据平台目前已成为大数据技术领域的佼佼者,同类竞争者包括Flink、Storm等。Spark是一个基于内存计算的大数据框架,支持离线处理和流计算。它的设计思想最初来源于Hadoop的MapReduce,但在性能上得到了大幅提高,可以轻松访问HDFS、Hive、HBase、MySQL等各种不同类型的数据源,提供了上百种计算功能的API,支持Scala、Java、Python、R、SQL等业界主流的编程语言。Spark还是一个“一站式”的大数据统一计算分析引擎,除了支持RDD、Spark SQL离线数据处理技术、Spark Streaming流计算技术,还包含GraphX图计算、MLlib机器学习等模块,自带一个Spark Standalone集群管理器,具有非常强的适应性,可应用于多种不同的大数据计算场合。
Spark框架是用Scala编写的,这是一种兼具面向对象和函数式特性的编程语言,它的语法简洁且富有表现力,不仅可以减少代码的编写量,还具有强大的并发处理能力,这使得它在处理并行计算任务时表现出色,非常适用于大数据计算场合。此外,Scala能与Java实现无缝互操作,这不仅使Scala能充分利用Java的丰富资源,而且已有Java基础的开发人员,可以平滑地过渡到Scala上。不过,相较于Java来说,Scala毕竟是一种较新的编程语言,要熟练掌握并自如地应用它还需要一定的时间。为了使读者将注意力集中到Spark的技术学习上,本书将与Scala相关的基础内容融入实例中,并不会面面俱到地讲解Scala的语法,而是在编排知识内容时“按需学习”。此外,为尽可能降低学习Scala的难度,本书通过将Scala的语法特性与Java和Python的语法特性进行类比,从一定程度上弱化读者面对Scala所产生的困惑。
本书的目的是带领读者快速进入Spark的大数据世界。针对Spark初学者,本书重点考虑的是如何将一些枯燥的抽象数据、概念、原理讲清楚,为此书中设计了大量技术原理配图,在文字描述上辅之以比喻、类比等各种手段进行详细的说明,力求使读者实现形象化的理解。另外,项目化的教学方法近年在教学实践中得到了大量应用,相比传统偏理论的教学方式确实更加高效,但在教学过程中教学者也发现,过度项目化很容易导致一些问题,比如知识体系凌乱,倾向关注项目细节而使读者对一些复杂知识的理解不深等问题。为此,本书尝试以实例和项目相结合的方式,通过各种简单易懂的教学实例推进知识和技能点的学习,同时安排大量配套单元训练以期达到“学以致用”目的,最后将各种相关技术整合到项目中进行综合应用,切实培养读者使用Spark大数据技术解决实际问题的能力。
本书分为6章,具体内容如下。
第1章首先介绍Spark大数据平台的概念、应用场景、编程环境以及Spark应用程序基本原理,然后阐述Spark大数据环境的搭建,内容包括Linux操作系统安装和配置、Hadoop伪分布式集群环境搭建、Spark单机运行环境搭建。另外,本章还介绍了Scala的核心语法。
第2章主要介绍Spark RDD的基本原理和编程模型,重点阐述Spark RDD的常用操作,包括RDD的创建,RDD的转换操作和行动操作,并通过3个综合实例对RDD的常用操作进行实际运用。另外,本章还介绍了Spark读/写不同类型文件的内容。
第 3 章首先介绍DataFrame的基本原理,重点分析Spark SQL的常用操作,包括DataFrame的基本创建、查看和常见的数据操作(包括DSL和SQL两大类),然后通过两个综合实例展示如何使用Spark SQL来解决实际问题,最后阐述DataFrame创建和保存、RDD/DataFrame/
Dataset类型转换等内容。
第4章简要介绍Spark Streaming流数据计算方面的技术,包括Spark Streaming基本原理、Spark Streaming词频统计编程举例这两方面的内容。
第5章首先介绍Spark应用开发环境的搭建和Spark几个核心技术,包括RDD的概念、分区机制、依赖关系、计算调度(Job/Stage/Task)和缓存机制,然后阐述Spark广播变量和累加器的基本使用方法,以及Spark生态和应用架构、Spark集群和应用部署等方面的内容。
第6章主要介绍CentOS+Hadoop+Spark完全分布式集群环境的搭建方法,并通过一个离线数据处理的综合实例,阐述将Spark大数据技术运用到实际项目中的基本思路和流程。
本书深入学习贯彻党的二十大精神,实施科教兴国战略,强化现代化建设人才支撑。坚持党管人才原则,坚持尊重劳动、尊重知识、尊重人才、尊重创造,实施更加积极、更加开放、更加有效的人才政策,引导广大人才爱党报国、敬业奉献、服务人民。本书以企业人才岗位需求为目标,突出知识与技能的有机融合,让读者在学习过程中举一反三,培养创新思维,以适应高等职业教育人才的建设需求。
本书由杭州职业技术大学的李新辉、高永梅编著,书中部分项目素材由杭州时课智能科技有限公司提供,在编写本书过程中,编者参考了部分网络资源,在此一并对提供这些资源的作者表示感谢。
为了方便教师教学,本书配有电子课件及相关资源,包括虚拟机、源代码、PPT、教学设计、单元训练答案等,读者可登录华信教育资源网注册后免费下载,如果有问题可在网站留言板留言或与电子工业出版社联系(E-mail:hxedu@phei. com.cn),也可直接与编者取得联系(E-mail:lxh2002@126.com)。
本书实例所选用的数据均为假设,并非真实数据,无实际意义,所有数据没有单位,不影响实例讲解。
教材建设是一项系统工程,需要在实践中不断加以完善及改进,由于编者水平有限,书中难免存在疏漏和不足之处,敬请同行专家和广大读者批评与指正。
编 者
展开