Spark编程基础(Python版)

Python版Spark编程
分享 推荐 0 收藏 24 阅读 2.1K
林子雨 (作者)

关于本书的内容有任何问题,请联系 邹文波

披荆斩棘,在大数据丛林中开辟学习捷径
填沟削坎,为快速学习Spark技术铺平道路
深入浅出,有效降低Spark技术学习门槛
资源全面,构建全方位一站式在线服务体系
¥49.80 ¥42.33 (8.5 折)

内容摘要

内 容 简 介
本书以Python作为开发Spark应用程序的编程语言,系统介绍了Spark编程的基础知识。全书共8章,内容包括大数据技术概述、Spark的设计与运行原理、Spark环境搭建和使用方法、RDD编程、Spark SQL、Spark Streaming、Structured Streaming和Spark MLlib等。本书在相关章安排了入门级的编程实践操作,以便读者能更好地学习和掌握Spark编程方法。本书网站免费提供全套的在线教学资源,包括讲义PPT、习题、源代码、软件、数据集、授课视频、上机实验指南等。
本书可以作为高等院校计算机、软件工程、数据科学与大数据技术等专业的进阶级大数据课程教材,用于指导Spark编程实践,也可供相关技术人员参考。

前言

大数据时代的来临,带来了各行各业的深刻变革。大数据像能源、原材料一样,已经成为提升国家和企业竞争力的关键要素,被称为“未来的新石油”。正如电力技术的应用引发了生产模式的变革一样,基于互联网技术而发展起来的大数据技术,将会对人们的生产和生活产生颠覆性的影响。

大数据技术正处于快速发展之中,不断有新的技术涌现,Hadoop和Spark等技术成为其中的佼佼者。在 Spark 流行之前,Hadoop俨然已成为大数据技术的事实标准,在企业中得到了广泛的应用,但其本身还存在诸多缺陷,最主要的缺陷是 MapReduce 计算模型延迟过高,无法胜任实时、快速计算的需求,因而只适用于离线批处理的应用场景。Spark在设计上充分吸收、借鉴了MapReduce的精髓并加以改进,同时,采用了先进的DAG执行引擎,以支持循环数据流与内存计算。因此,Spark在性能上比MapReduce有了大幅度的提升,迅速获得了学界和业界的广泛关注。作为大数据计算平台的后起之秀,Spark在2014年打破了由Hadoop保持的基准排序纪录,此后逐渐发展成为大数据领域最热门的计算平台之一。

随着大数据在企业应用的不断深化,企业对大数据人才的需求日益增长。为了有效满足不断增长的大数据人才需求,国内高校从2016年开始建设“数据科学与大数据技术”专业,着力培养大数据科学与工程领域的复合型高级工程技术人才。课程体系的建设和课程教材的创作,是高校大数据专业建设的核心环节。

厦门大学数据库实验室在大数据教学领域辛勤耕耘、开拓创新,成为国内高校大数据教学资源的有力贡献者。实验室在积极践行O2O大数据教学理念的同时,提出了“以平台化思维打造中国高校大数据课程公共服务体系”的全新服务理念,成为推进国内高校大数据教学不断向前发展的一支重要力量,在全国高校范围内具有广泛的影响。2015年7月,实验室编著出版了国内高校第一本系统性介绍大数据知识的专业教材《大数据技术原理与应用》,受到了广泛的好评,目前已经成为国内众多高校的入门级大数据课程的教材。同时,实验室建设了国内高校首个大数据课程公共服务平台,为全国高校的教师和学生提供大数据教学资源一站式“免费”在线服务,包括课程教材、讲义 PPT、课程习题、实验指南、学习指南、备课指南、授课视频和技术资料等。自2013年5月建成以来,平台每年访问量超过100万次,成为全国高校大数据教学知名品牌。

《大数据技术原理与应用》定位为入门级大数据教材,以“构建知识体系、阐明基本原理、开展初级实践、了解相关应用”为原则,旨在为读者搭建起通往大数据知识空间的桥梁和纽带,为读者在大数据领域的“精耕细作”奠定基础、指明方向。高校在开设入门级课程以后,可以根据实际情况,开设进阶级的大数据课程,继续深化学生对热门大数据技术的学习,而Spark是目前比较理想的大数据进阶课程学习内容。因此,厦门大学数据库实验室组织具有丰富经验的一线大数据教师精心编写了本书。

Spark框架本身是使用 Scala 语言开发的,因此,开发Spark应用程序的首选语言是Scala。但是,Python语言已经成为一门非常热门的语言,有着广泛的使用群体,为了较好满足Python使用群体学习Spark的需求,编者编写了本书。

本书共8章,详细介绍了Spark的环境搭建和基础编程方法。第1章介绍大数据关键技术,帮助读者形成对大数据技术的总体性认识以及理解 Spark 在其中所扮演的角色;第2章介绍Spark的设计与运行原理;第3章介绍Spark的环境搭建和使用方法,为开展Spark编程实践铺平道路;第4章介绍RDD编程,包括RDD的创建、操作API、持久化、分区以及键值对RDD等,这章知识是开展Spark高级编程的基础;第5章介绍Spark中用于结构化数据处理的组件 Spark SQL,包括DataFrame 数据模型、创建方法和常用操作等;第6章介绍Spark Streaming,这是一种构建在Spark上的流计算框架,可以满足对流式数据进行实时计算的需求;第7章介绍Structured Streaming,这是一种基于Spark SQL引擎构建的、可扩展且容错的流处理引擎,可以实现毫秒级的实时响应;第8章介绍Spark的机器学习库MLlib,包括MLlib的基本原理、算法、模型选择和超参数调整方法等。

本书面向高校计算机、软件工程、数据科学与大数据技术等专业的学生,可以作为专业必修课或选修课教材。本书由林子雨、郑海山和赖永炫执笔,其中,林子雨负责全书的规划、统稿、校对和在线资源创作,并撰写第1~6章的内容,郑海山撰写了第7章的内容,赖永炫撰写了第8章的内容。在撰写过程中,厦门大学计算机科学系硕士研究生阮榕城、薛倩、魏亮、曾冠华、程璐、林哲、郑宛玉、陈杰祥等做了大量辅助性工作,在此,向这些同学的辛勤工作表示衷心的感谢。同时,感谢夏小云老师在书稿校对过程中的辛勤付出。

本书网站是 http://dblab.xmu.edu.cn/post/spark-python/,免费提供了全部配套资源的在线浏览和下载,并接受错误反馈和发布勘误信息。同时,Spark作为大数据进阶课程,在学习过程中会涉及大量相关的大数据基础知识以及各种大数据软件的安装和使用方法,因此,推荐读者 访问厦门大学数据库实验室建设的国内高校首个大数据课程公共服务平台(http://dblab.xmu.edu.
cn/post/bigdata-teaching-platform/),来获得必要的辅助学习内容。

编者在撰写本书的过程中,参考了大量网络资料和相关书籍,对Spark技术进行了系统梳理,有选择性地把一些重要知识纳入本书。由于编者能力有限,本书难免存在不足之处,望广大读者不吝赐教。
林子雨
厦门大学计算机科学系数据库实验室
2019年9月

目录

第1 章 大数据技术概述 1
1.1 大数据概念与关键技术 2
1.1.1 大数据的概念 2
1.1.2 大数据关键技术 2
1.2 代表性大数据技术 4
1.2.1 Hadoop 4
1.2.2 Spark 8
1.2.3 Flink 10
1.2.4 Beam 11
1.3 编程语言的选择 12
1.4 在线资源 13
1.5 本章小结 14
1.6 习题 14
实验1 Linux 系统的安装和常用命令 15
第2 章 Spark 的设计与运行原理 17
2.1 概述 18
2.2 Spark 生态系统 19
2.3 Spark 运行架构 21
2.3.1 基本概念 21
2.3.2 架构设计 21
2.3.3 Spark 运行基本流程 22
2.3.4 RDD 的设计与运行原理 24
2.4 Spark 的部署方式 33
2.5 本章小结 34
2.6 习题 34
第3 章 Spark 环境搭建和使用方法 35
3.1 安装Spark 36
3.1.1 基础环境 36
3.1.2 下载安装文件 36
3.1.3 配置相关文件 38
3.1.4 验证Spark 是否安装成功 39
3.1.5 Spark 和Hadoop 的交互 39
3.2 在pyspark 中运行代码 40
3.2.1 pyspark 命令 40
3.2.2 启动pyspark 41
3.3 开发Spark 独立应用程序 42
3.3.1 编写程序 42
3.3.2 通过spark-submit 运行程序 43
3.4 Spark 集群环境搭建 44
3.4.1 集群概况 44
3.4.2 搭建Hadoop 集群 44
3.4.3 在集群中安装Spark 45
3.4.4 配置环境变量 45
3.4.5 Spark 的配置 46
3.4.6 启动Spark 集群 47
3.4.7 关闭Spark 集群 47
3.5 在集群上运行Spark 应用程序 48
3.5.1 启动Spark 集群 48
3.5.2 采用独立集群管理器 48
3.5.3 采用Hadoop YARN 管理器 49
3.6 本章小结 51
3.7 习题 51
实验2 Spark 和Hadoop 的安装 51

第4 章 RDD 编程 53
4.1 RDD 编程基础 54
4.1.1 RDD 创建 54
4.1.2 RDD 操作 56
4.1.3 持久化 63
4.1.4 分区 64
4.1.5 一个综合实例 69
4.2 键值对RDD 71
4.2.1 键值对RDD 的创建 71
4.2.2 常用的键值对转换操作 72
4.2.3 一个综合实例 78
4.3 数据读写 79
4.3.1 文件数据读写 79
4.3.2 读写HBase 数据 82
4.4 综合实例 86
4.4.1 求TOP 值 86
4.4.2 文件排序 89
4.4.3 二次排序 91
4.5 本章小结 94
4.6 习题 95
实验3 RDD 编程初级实践 95
第5 章 Spark SQL 98
5.1 Spark SQL 简介 99
5.1.1 从Shark 说起 99
5.1.2 Spark SQL 架构 100
5.1.3 为什么推出Spark SQL 101
5.2 DataFrame 概述 101
5.3 DataFrame 的创建 102
5.4 DataFrame 的保存 103
5.5 DataFrame 的常用操作 104
5.6 从RDD 转换得到DataFrame 105
5.6.1 利用反射机制推断RDD 模式 106
5.6.2 使用编程方式定义RDD 模式 107
5.7 使用Spark SQL 读写数据库 108
5.7.1 准备工作 109
5.7.2 读取MySQL 数据库中的数据 109
5.7.3 向MySQL 数据库写入数据 110
5.8 本章小结 111
5.9 习题 112
实验4 Spark SQL 编程初级实践 112
第6 章 Spark Streaming 115
6.1 流计算概述 116
6.1.1 静态数据和流数据 116
6.1.2 批量计算和实时计算 117
6.1.3 流计算概念 117
6.1.4 流计算框架 118
6.1.5 流计算处理流程 119
6.2 Spark Streaming 121
6.2.1 Spark Streaming 设计 121
6.2.2 Spark Streaming 与Storm 的对比 122
6.2.3 从“Hadoop+Storm”架构转向Spark 架构 122
6.3 DStream 操作概述 123
6.3.1 Spark Streaming 工作机制 123
6.3.2 编写Spark Streaming 程序的基本步骤 124
6.3.3 创建StreamingContext 对象 124
6.4 基本输入源 125
6.4.1 文件流 125
6.4.2 套接字流 127
6.4.3 RDD 队列流 131
6.5 高级数据源 133
6.5.1 Kafka 简介 133
6.5.2 Kafka 准备工作 133
6.5.3 Spark 准备工作 135
6.5.4 编写Spark Streaming 程序使用Kafka 数据源 136
6.6 转换操作 137
6.6.1 DStream 无状态转换操作 137
6.6.2 DStream 有状态转换操作 138
6.7 输出操作 143
6.7.1 把DStream 输出到文本文件中 143
6.7.2 把DStream 写入到关系数据库中 145
6.8 本章小结 147
6.9 习题 147
实验5 Spark Streaming 编程初级实践 147
第7 章 Structured Streaming 150
7.1 概述 151
7.1.1 基本概念 151
7.1.2 两种处理模型 152
7.1.3 Structured Streaming 和Spark SQL、Spark Streaming 的关系 154
7.2 编写Structured Streaming程序的基本步骤 154
7.2.1 实现步骤 154
7.2.2 测试运行 156
7.3 输入源 158
7.3.1 File 源 158
7.3.2 Kafka 源 163
7.3.3 Socket 源 167
7.3.4 Rate 源 167
7.4 输出操作 169
7.4.1 启动流计算 169
7.4.2 输出模式 170
7.4.3 输出接收器 170
7.5 容错处理 173
7.5.1 从检查点恢复故障 173
7.5.2 故障恢复中的限制 173
7.6 迟到数据处理 174
7.6.1 事件时间 174
7.6.2 迟到数据 175
7.6.3 水印 176
7.6.4 多水印规则 177
7.6.5 处理迟到数据的实例 178
7.7 查询的管理和监控 181
7.7.1 管理和监控的方法 181
7.7.2 一个监控的实例 182
7.8 本章小结 184
7.9 习题 185
实验6 Structured Streaming编程实践 185
第8章 Spark MLlib 187
8.1 基于大数据的机器学习 188
8.2 机器学习库MLlib 概述 189
8.3 基本数据类型 190
8.3.1 本地向量 190
8.3.2 标注点 191
8.3.3 本地矩阵 192
8.4 机器学习流水线 193
8.4.1 流水线的概念 193
8.4.2 流水线工作过程 193
8.5 特征提取、转换和选择 195
8.5.1 特征提取 195
8.5.2 特征转换 199
8.5.3 特征选择 204
8.5.4 局部敏感哈希 205
8.6 分类算法 205
8.6.1 逻辑斯蒂回归分类器 206
8.6.2 决策树分类器 212
8.7 聚类算法 217
8.7.1 K-Means 聚类算法 218
8.7.2 GMM 聚类算法 220
8.8 协同过滤算法 223
8.8.1 推荐算法的原理 223
8.8.2 ALS 算法 224
8.9 模型选择和超参数调整 228
8.9.1 模型选择工具 229
8.9.2 用交叉验证选择模型 229
8.10 本章小结 232
8.11 习题 233
实验7 Spark 机器学习库MLlib编程实践 233
参考文献 235

读者评论

赶紧抢沙发哦!

我要评论

作者介绍


林子雨(1978-),男,博士,全国高校知名大数据教师,厦门大学计算机科学系副教授,厦门大学云计算与大数据研究中心创始成员,厦门大学数据库实验室负责人。于2001年获得福州大学水利水电专业学士学位,2005年获得厦门大学计算机专业硕士学位,2009年获得北京大学计算机专业博士学位。中国高校首个“数字教师”提出者和建设者(http://dblab.xmu.edu.cn/post/linziyu),2009年至今,“数字教师”大平台累计向网络免费发布超过500万字高价值的教学和科研资料,累计网络访问量超过1000万次。2013年开始在厦门大学开设大数据课程,主持的课程《大数据技术原理与应用》获评2018年国家精品在线开放课程。
主要研究方向为数据库、数据仓库、数据挖掘、大数据和云计算,发表期刊和会议学术论文多篇,并作为课题组负责人承担了国家自然科学基金和福建省自然科学基金项目。曾作为志愿者翻译了Google Spanner、BigTable和《Architecture of a Database System》等大量英文学术资料,与广大网友分享,深受欢迎。因在教学领域的突出贡献,成为2013年度和2017年度厦门大学教学类奖教金获得者,并荣获2018年厦门大学教学成果特等奖和2018年福建省教学成果二等奖。
主讲课程:《大数据技术原理与应用》、《大数据处理技术》、《大数据导论》。
个人主页:http://dblab.xmu.edu.cn/post/linziyu。
E-mail: ziyulin@xmu.edu.cn。
数据库实验室网站:http://dblab.xmu.edu.cn。
建设了高校大数据课程公共服务平台(http://dblab.xmu.edu.cn/post/bigdata-teaching- platform/),为教师教学和学生学习大数据课程提供包括教学大纲、讲义PPT、学习指南、备课指南、实验指南、上机习题、授课视频、技术资料等全方位、一站式免费服务,平台每年访问量超过200万次,累计访问量超过750万次,同时提供面向高校的大数据实验平台建设方案和大数据课程师资培训服务。

购买本书用户

相关图书