新書推薦:
《
中国年画 1950-1990 THE NEW CHINA: NEW YEAR PICTURE 英文版
》
售價:HK$
236.0
《
革命与反革命:社会文化视野下的民国政治(近世中国丛书)
》
售價:HK$
93.2
《
画楼:《北洋画报》忆旧(年轮丛书)
》
售價:HK$
337.5
《
大国脊梁:漫画版
》
售價:HK$
80.2
《
跟着渤海小吏读历史:大唐气象(全三册)
》
售價:HK$
189.0
《
心智的构建:大脑如何创造我们的精神世界
》
售價:HK$
81.4
《
美国小史(揭秘“美国何以成为美国”,理解美国的经典入门读物)
》
售價:HK$
81.4
《
中国古代北方民族史丛书——东胡史
》
售價:HK$
87.8
|
編輯推薦: |
本书具有以下几个特点:
(1) 面向零基础读者,知识点深浅适当,代码完整易懂。
(2) 内容全面系统,包括架构原理、开发环境及程序部署、流和批计算、综合项目案例等。
(3) 版本先进,所有代码均基于Spark 3.1.2和Python 3.7。
(4) 全书包含大量的示例代码讲解和完整项目案例。
|
內容簡介: |
本书系统讲述Apache Spark/PySpark大数据计算平台的原理,以及如果将Apache PySpark应用于大数据的实时流处理、批处理等各个场景。通过原理深入学习和实践示例、案例的学习应用,使读者了解并掌握Apache Spark/PySpark的基本原理和技能,接近理论与实践的距离。 全书共分为8章,主要内容包括:Spark架构原理与集群搭建、开发和部署PySpark应用程序、PySpark核心编程、PySpark SQL、PySpark SQL高级分析、PySpark结构化流、PySpark结构化流高级处理、Spark大数据处理综合案例。本书源码全部在Apache Spark 3.1.2上调试成功,所有示例和案例均基于Python 3.x语言。 为降低读者学习大数据技术的门槛,本书除了提供了丰富的上机实践操作和范例程序详解之外,本书作者还为购买和使用本书的读者提供了搭建好的Hadoop、Hive数仓和PySpark大数据开发和学习环境。读者既可以参照本书的讲解自行搭建Hadoop和PySpark环境,也可直接使用作者提供的开始和学习环境,快速开始大数据和PySpark的学习。 本书系统讲解了Apache Spark/PySpark大数据计算平台的原理和流、批处理的开发实践,内容全面、实例丰富、可操作性强,做到了理论与实践相结合。本书适合大数据学习爱好者、想要入门Apache Spark/PySpark的读者作为入门和提高的技术参考书,也适合用作大中专院校大数据专业相关的学生和老师的教材或教学参考书。
|
關於作者: |
辛立伟,一个在IT领域摸爬滚打二十多年的老程序员、技术培训师、技术作者。横跨Java、数据库、大数据开发与分析、人工智能等多个领域,参与多个IT项目的架构设计与开发。长期坚持撰写技术博客,曾在多个大学讲授Java开发、数据库和大数据技术课程,曾担任中国石油大学(青岛校区)等多所院校的外聘讲师。
|
目錄:
|
第 1章 Spark架构原理与集群搭建(
78min) ·· 1
1.1 Spark简介·1
1.2 Spark技术栈·3
1.2.1 Spark Core··4
1.2.2 Spark SQL··4
1.2.3 Spark Streaming和 Structured Streaming···5
1.2.4 Spark MLlib ···5
1.2.5 Spark GraphX·6
1.2.6 SparkR ···6
1.3 Spark和 PySpark架构原理 ···7
1.3.1 Spark集群和资源管理系统 ··7
1.3.2 Spark应用程序 ··7
1.3.3 Spark Driver和 Executor ···9
1.3.4 PySpark架构···10
1.4 Spark程序部署模式11
1.5 安装和配置 Spark集群···12
1.5.1 安装 Spark ···12
1.5.2 了解 Spark目录结构···13
1.5.3 配置 Spark/PySpark集群·14
1.5.4 验证 PySpark安装···15
1.6 配置 Spark历史服务器···17
1.6.1 历史服务器配置 ··17
1.6.2 启动 Spark历史服务器···19
1.7 使用 PySpark Shell进行交互式分析 ··20
1.7.1 运行模式 --master·20
1.7.2 启动和退出 PySpark Shell···21
1.7.3 PySpark Shell常用命令···23
1.7.4 SparkContext和 SparkSession ·23
1.7.5 Spark Web UI ···25
1.8 使用 spark-submit提交 PySpark应用程序·28
1.8.1 spark-submit指令的各种参数说明·28
1.8.2 提交 pi.ipynb程序,计算圆周率 π值31
1.8.3 将 PySpark程序提交到 YARN集群上执行 ···32第 2章开发和部署 PySpark应用程序(
80min)··· 34
2.1 使用 PyCharm开发 PySpark应用程序···34
2.1.1 准备数据文件 ··34
2.1.2 安装 PyCharm··35
2.1.3 创建一个新的 PyCharm项目··35
2.1.4 安装 PySpark包 ··36
2.1.5 创建 PySpark应用程序···39
2.1.6 部署到集群中运行 ··40
2.2 使用 Zeppelin进行交互式分析 ···41
2.2.1 下载 Zeppelin安装包··42
2.2.2 安装和配置 Zeppelin ···42
2.2.3 配置 Spark/PySpark解释器 ·44
2.2.4 创建和执行 Notebook文件·45
2.3 使用 Jupyter Notebook进行交互式分析 ·46
2.3.1 配置 PySpark Driver使用 Jupyter Notebook···47
2.3.2 使用 findSpark包49第 3章 PySpark核心编程(
212min) · 51
3.1 理解数据抽象 RDD·51
3.2 RDD编程模型 53
3.2.1 单词计数应用程序 ··53
3.2.2 理解 SparkSession56
3.2.3 理解 SparkContext ···57
3.3 创建 RDD 58
3.3.1 将现有的集合并行化以创建 RDD··58
3.3.2 从存储系统读取数据集以创建 RDD··60
3.3.3 从已有的 RDD转换得到新的 RDD ···60
3.3.4 创建 RDD时指定分区数量 60
3.4 操作 RDD 61
3.4.1 RDD上的 Transformation和 Action ···62
3.4.2 RDD Transformation操作64
3.4.3 RDD Action操作·70
3.4.4 RDD上的描述性统计操作·73
3.5 Key-Value Pair RDD 74
3.5.1 创建 Pair RDD ·75
3.5.2 操作 Pair RDD ·76
3.5.3 关于 reduceByKey()操作81
3.5.4 关于 aggregateByKey() 操作···83
3.5.5 关于 combineByKey()操作·87 3.6 持久化 RDD 90
3.6.1 缓存 RDD 90
3.6.2 RDD缓存策略 92
3.6.3 检查点 RDD 93
3.7 数据分区 ·94
3.7.1 获取和指定 RDD分区数 95
3.7.2 调整 RDD分区数96
3.7.3 内置数据分区器 ··97
3.7.4 自定义数据分区器 101
3.7.5 避免不必要的 shuffling ·102
3.7.6 基于数据分区的操作 104
3.8 使用共享变量 108
3.8.1 广播变量 109
3.8.2 累加器 ··· 114
3.9 PySpark RDD可视化 116
3.10 PySpark RDD编程案例 ·· 117
3.10.1 合并小文件 · 117
3.10.2 二次排序实现 · 119
3.10.3 Top N实现··121
3.10.4 数据聚合计算 ·125 第 4章 PySpark SQL(初级) (
163min)·127
4.1 PySpark SQL数据抽象·127
4.2 PySpark SQL编程模型·129
4.3 程序入口 SparkSession··132
4.4 PySpark SQL中的模式和对象··134
4.4.1 模式···134
4.4.2 列对象和行对象 135
4.5 简单构造 DataFrame ·136
4.5.1 简单创建单列和多列 DataFrame ··137
4.5.2 从 RDD创建 DataFrame ···140
4.5.3 读取外部数据源创建 DataFrame ··144
4.6 操作 DataFrame ·166
4.6.1 列的多种引用方式 167
4.6.2 对 DataFrame执行 Transformation转换操作···170
4.6.3 对 DataFrame执行 Action操作184
4.6.4 对 DataFrame执行描述性统计操作 ·185
4.6.5 提取 DataFrame Row中特定字段·188
4.6.6 操作 DataFrame示例·189
4.7 存储 DataFrame ·191
4.7.1 写出 DataFrame ·191 4.7.2 存储模式 194
4.7.3 控制 DataFrame的输出文件数量·195
4.7.4 控制 DataFrame实现分区存储·199
4.8 临时视图与 SQL查询···201
4.8.1 在 PySpark程序中执行 SQL语句201
4.8.2 注册临时视图并执行 SQL查询 ···203
4.8.3 使用全局临时视图 206
4.8.4 直接使用数据源注册临时视图 ·208
4.8.5 查看和管理表目录 209
4.9 缓存 DataFrame · 211
4.9.1 缓存方法 211
4.9.2 缓存策略 213
4.9.3 缓存表 ···214
4.10 PySpark SQL可视化···214
4.10.1 PySpark DataFrame转换到 Pandas·214
4.10.2 PySpark SQL DataFrame可视化 218
4.11 PySpark SQL编程案例 ···220
4.11.1 实现单词计数 ·220
4.11.2 用户数据集分析 ·222
4.11.3 航空公司航班数据集分析 ··224 第 5章 PySpark SQL(高级) (
115min)·234
5.1 PySpark SQL函数·234
5.2 内置标量函数 234
5.2.1 日期时间函数 235
5.2.2 字符串函数 239
5.2.3 数学计算函数 243
5.2.4 集合元素处理函数 244
5.2.5 其他函数 248
5.2.6 函数应用示例 252
5.2.7 PySpark 3数组函数···255
5.3 聚合与透视函数 264
5.3.1 聚合函数 264
5.3.2 分组聚合 271
5.3.3 数据透视 274
5.4 高级分析函数 277
5.4.1 使用多维聚合函数 277
5.4.2 使用时间窗口聚合 281
5.4.3 使用窗口分析函数 286
5.5 用户自定义函数( UDF)·296
5.5.1 内部原理 296 5.5.2 创建和使用 UDF ···297
5.5.3 特殊处理 303
5.6 数据集的 join连接305
5.6.1 join表达式和 join类型·306
5.6.2 执行 join连接307
5.6.3 处理重复列名 314
5.6.4 join连接策略·317
5.7 读写 Hive表··319
5.7.1 PySpark SQL的 Hive配置320
5.7.2 PySpark SQL读写 Hive表322
5.7.3 分桶、分区和排序 332
5.8 PySpark SQL编程案例·334
5.8.1 电商订单数据分析 334
5.8.2 电影评分数据集分析 344 第 6章 PySpark结构化流(初级) (
195min)·349
6.1 PySpark DStream流简介···349
6.2 PySpark结构化流简介··354
6.3 PySpark结构化流编程模型··356
6.4 PySpark结构化流核心概念··360
6.4.1 数据源 ···360
6.4.2 输出模式 361
6.4.3 触发器类型 362
6.4.4 数据接收器 362
6.4.5 水印···363
6.5 使用各种流数据源 363
6.5.1 使用 Socket数据源···364
6.5.2 使用 Rate数据源···365
6.5.3 使用 File数据源368
6.5.4 使用 Kafka数据源 372
6.6 流 DataFrame操作379
6.6.1 选择、投影和聚合操作 379
6.6.2 执行 join连接操作385
6.7 使用数据接收器 388
6.7.1 使用 File Data Sink 389
6.7.2 使用 Kafka Data Sink·391
6.7.3 使用 Foreach Data Sink··394
6.7.4 使用 Console Data Sink ·399
6.7.5 使用 Memory Data Sink·401
6.7.6 Data Sink与输出模式 ···402
6.8 深入研究输出模式 402
6.8.1 无状态流查询 403 6.8.2 有状态流查询 404
6.9 深入研究触发器 409
6.9.1 固定间隔触发器 410
6.9.2 一次性的触发器 412
6.9.3 连续性的触发器 413 第 7章 PySpark结构化流(高级) (
62min)···416
7.1 事件时间和窗口聚合 416
7.1.1 固定窗口聚合 416
7.1.2 滑动窗口聚合 421
7.2 水印···426
7.2.1 限制维护的聚合状态数量 ·426
7.2.2 处理迟到的数据 429
7.3 处理重复数据 436
7.4 容错···439
7.5 流查询度量指标 441
7.6 结构化流案例:运输公司车辆超速实时监测 ··443
7.6.1 实现技术剖析 443
7.6.2 完整实现代码 449
7.6.3 执行步骤演示 451 第 8章 PySpark大数据分析综合案例 (
21min)··455
8.1 项目需求说明 455
8.2 项目架构设计 456
8.3 项目实现:数据采集 457
8.3.1 爬虫程序实现:使用 requests库··457
8.3.2 爬虫程序实现:使用 Scrapy框架460
8.4 项目实现:数据集成 466
8.4.1 Flume简介 466
8.4.2 安装和配置 Flume·467
8.4.3 实现数据集成 468
8.5 项目实现:数据 ELT 469
8.6 项目实现:数据清洗与整理 ·472
8.7 项目实现:数据分析 476
8.8 项目实现:分析结果导出 ·479
8.9 项目实现:数据可视化 480
8.9.1 Flask框架简介··480
8.9.2 ECharts图表库介绍 ··481
8.9.3 Flask Web程序开发 ··483
8.9.4 前端 ECharts组件开发··485
|
內容試閱:
|
大数据分析一直是一个热门话题,需要大数据分析的场景也越来越多。Apache Spark是一个用于快速、通用、大规模数据处理的开源项目。现在, Apache Spark已经成为一个统一的大数据处理平台,拥有一个快速的统一分析引擎,可用于大数据的批处理、实时流处理、机器学习和图计算。
2009年,Spark诞生于伯克利大学 AMP实验室,最初属于伯克利大学的研究性项目。它于 2010年被正式开源,于2013年被转交给 Apache软件基金会,并于 2014年成为 Apache基金的顶级项目,整个过程不到五年时间。 Apache Spark诞生以后,迅速发展成为大数据处理技术中的佼佼者,目前已经成为大数据处理领域炙手可热的技术,其发展势头非常强劲。
自2010年首次发布以来, Apache Spark已经成为极为活跃的大数据开源项目之一。如今,Apache Spark实际上已经是大数据处理、数据科学、机器学习和数据分析工作负载的统一引擎,是从业人员及希望进入大数据行业人员必须学习和掌握的大数据技术之一。
Apache Spark支持 Java、Scala、Python和 R语言,并提供了相应的 API,而在数据科学领域,Python是应用得非常普遍的数据处理语言,但是作为大数据的初学者,即使精通 Python语言,在学习 PySpark时通常也会遇到以下几个难题:
(1)缺少面向零基础读者的 PySpark入门教程。
(2)缺少系统化的 PySpark大数据教程。
(3)现有的 PySpark资料、教程或图书陈旧或者碎片化。
(4)官方全英文文档难以阅读和理解。
(5)缺少必要的数据集、可运行的实验案例及学习平台。
特别是 Spark 3发布以后,性能得到了极大提升。为此,一方面是为了编者自己能更系统、更及时地跟进 Spark/PySpark的演进和迭代;另一方面也是为了降低面向零基础读者学习 PySpark(及其他大数据技术)的入门难度,编写了这本《 PySpark原理深入与编程实战(微课视频版)》。编者以为,本书具有以下几个特点:
(1)面向零基础读者,知识点深浅适当,代码完整易懂。
(2)内容全面系统,包括架构原理、开发环境及程序部署、流和批计算、综合项目案例等。
(3)版本较新,所有代码均基于 Spark 3.1.2和 Python 3.7。
(4)全书包含大量的示例代码讲解和完整项目案例。扫描目录上方二维码可获取本书配套资源。本书特别适合想要入门并深入掌握 Apache Spark/PySpark大数据开发和大数据分析、
大数据 OLAP引擎、流计算的读者,希望拥有大数据系统参考教材的教师,及想要了解最
新 Spark/PySpark技术应用的从业人员。本书第 1~3章由辛雨桐执笔编写,第 4~8章由辛立伟执笔编写。由于编者水平所限,行文及内容难免有疏漏之处,请读者见谅并予以反馈,笔者会在后
续的版本重构中不断提升内容质量。
编 者
2023年 4月
|
|