本书是PySpark大数据分析的入门读物,适合有一定Python基础的读者学习使用。本书基于最新版本的PySpark 3.4.x编写,全书共11章,系统地介绍了PySpark大数据分析的方法和技巧,内容涵盖了大数据的相关技术、PySpark的基本概念、Spark环境搭建、数据分析的基本概念及相关工具、开发工具的选择、Spark核心编程和Spark SQL操作等基础知识和核心技术,以及Spark流式数据处理、Spark机器学习库MLlib和基于协同过滤的图书推荐系统等高级主题。本书通过多个实战案例,带领读者掌握使用Python和Spark进行大数据分析的方法和技巧,从而提高读者的数据处理能力和业务价值。
本书内容全面、示例丰富、讲解清晰,读者可以直接应用书中的案例。本书适合自学,也可作为计算机、软件工程、数据科学与大数据等专业的教学参考书,用于指导大数据分析编程实践,还可供相关技术人员参考。
1. 6位行业专家鼎力推荐,大数据从业者案头宝典。
2. 赠送超过2200分钟的视频教程+程序源代码+运行环境安装包,助你早日实现从入门到精通。
随着互联网和科技的发展,每天都会出现大量的数据,这些数据包含了丰富的信息,大数据处理分析已经成为全球范围内的重要议题。大数据分析是当今时代的重要技能,它可以帮助我们从海量的数据中发现规律、洞察趋势、优化决策。然而,随着数据量爆炸式的增长和复杂度的提高,传统的数据分析工具已经难以满足需求。我们需要一种更强大、更灵活、更高效的大数据处理平台来应对各种数据挑战。
Spark是目前最流行的大数据处理框架之一,可以处理大规模的数据集,它具有快速、易用、通用和兼容等特点,支持批处理、流式处理、交互式查询和机器学习等多种场景,对于大数据分析非常有用。Python是一种广泛使用的优雅、易学的编程语言,因其简洁明了的语法和强大的数据处理能力,受到广 大数据分析师和数据科学家的喜爱,它拥有丰富的数据科学库和社区资源,可以与Spark无缝集成,实现大数据分析的全栈开发。PySpark是Spark的Python接口,它允许我们使用Python语言进行大数据分析。系统地学习PySpark,掌握大数据处理的技能,能够处理和分析大规模的数据集,这对于数据科学家和数据工程师来说是非常重要的。此外,由于PySpark是开源的,因此它也为我们提供了一个学习和分享知识的平台。
在阅读本书的过程中,可以对照源代码按章节顺序进行学习。当然,如果对书中某些章节比较熟悉,也可以跳过,直接学习需要了解的章节。本书源代码主要使用PyCharm社区版开发,数据分析中的可视化、交互式开发、交互式查询等可以使用JupyterLab或Databricks进行操作,因此本书也提供基于JupyterLab和Databricks开发的源代码。当然读者也可以选择自己喜欢的工具进行开发。
本书内容共分为11章。第1~4章是基础知识介绍;第5、6章是Spark的核心知识,其核心数据抽象RDD和DataFrame及相关的转换操作是后续章节的基础,对整个Spark的学习都非常重要;第7章是整合大数据仓库Hive,让Spark可以轻松处理已有数据仓库中的数据;第8~10章是Spark中的高级主题,包括流式数据处理和机器学习,其底层数据依然是RDD和DataFrame;第11章是一个综合案例。各章节内容说明如下:
第1章主要介绍了大数据的发展以及相关的技术,包括Spark的发展历程、特点、架构、PySpark库等,让读者对大数据技术及Spark有一个大致的了解。
第2章主要介绍了Spark环境的搭建,包括操作系统基础环境准备、单机环境搭建、独立集群环境搭建、YARN集群环境搭建以及云服务模式Databricks介绍等,让我们开发的代码有运行的地方。
第3章主要介绍了数据分析的基础知识,包括数据分析流程、数据分析的常用工具库和可视化库等。
第4章主要介绍了几种开发工具,包括Databricks、JupyterLab、PyCharm和PyCharm插件等,并且用每种工具都完成一个数据分析案例的开发,让读者对各种开发工具的开发流程及特点有所了解。
第5章主要介绍了Spark的核心功能Spark Core,包括Spark程序入口SparkContext、核心数据抽象RDD,以及RDD的创建、转换、持久化等功能,并用案例展示了如何在数据分析中使用RDD。
第6章主要介绍了Spark的结构化数据处理Spark SQL,包括统一的Spark程序入口SparkSession、核心数据抽象DataFrame,以及DataFrame的创建、转换、SQL操作和自定义函数等功能,并用案例展示了DataFrame在数据分析中的应用。
第7章主要介绍了使用Spark操作大数据仓库Hive中的数据,无需数据迁移,即可让Spark轻松处理Hive中已有的海量数据,并用案例展示了Spark如何直接操作Hive数据进行数据分析。
第8章和第9章主要介绍了两种不同的流式数据处理,包括创建、数据处理、结果输出等。第8章Spark Streaming中的数据抽象是DStream,底层数据是RDD;第9章Structured Streaming的底层数据是DataFrame。
第10章主要介绍了机器学习库MLlib,包括机器学习的基础知识、机器学习流程、模型评估、机器学习算法等。对机器学习感兴趣的读者可以了解到如何在Spark集群中完成机器学习,解决单机环境下的机器学习无法解决的问题。
第11章主要介绍了一个综合案例,基于协同过滤的图书推荐系统,综合运用Spark SQL、Structured Streaming、Spark MLlib、Kafka、MySQL、Flask、Flask-Admin等相关技术,实现大数据分析的全栈开发。
本书读者对象
本书适合有一定Python基础的读者,包括Python开发人员、大数据开发人员、数据分析师、数据科学爱好者等。
本书技术支持
非常感谢大家选择本书,希望本书可以给读者带来有价值的东西。在本书创作过程中,作者尽力做好每个知识点的呈现,但由于作者的精力和能力有限,在创作过程中难免有疏漏和不足之处,希望大家不吝指正。关于本书的任何问题都可发送邮件至wux_labs@outlook.com与作者交流。
本书配套资料
本书提供完整源代码及视频讲解,读者可以下载使用(具体方法详见本书封底)。
关于作者
本书作者拥有多年金融领域大数据处理实战经验,曾负责多家银行的数据仓库、大数据仓库、营销客户集市建设,热爱各种主流技术,对大数据技术栈Hadoop、Hive、Spark、Kafka等有深入研究,热爱数据科学、
伍鲜,就职于中电金信软件有限公司,担任高级软件工程师。拥有多年金融领域大数据处理实战经验,曾负责多家银行的Teradata数据仓库、FusionInsight大数据集群、阿里云大数据仓库、智能营销客户集市和客户中心建设。
热衷于各种主流技术,对大数据技术栈Hadoop、Hive、Spark、Kafka等有深入研究。热爱数据科学、机器学习、云计算、人工智能通过了微软Azure开发人员、Azure数据工程师Azure解决方案架构师专家认证,对Databricks的使用有丰富的经验。
前言
第1章 初识PySpark/
1.1 关于数据/
1.2 了解Hadoop/
1.2.1 分布式文件系统HDFS/
1.2.2 分布式计算框架MapReduce/
1.2.3 资源调度管理框架YARN/
1.3 了解Hive/
1.4 了解Spark/
1.4.1 Spark是什么/
1.4.2 Spark的发展历程/
1.4.3 Spark的特点/
1.4.4 Spark的生态系统/
1.4.5 Spark的部署模式/
1.4.6 Spark的运行架构/
1.5 PySpark库介绍/
1.6 本章小结/
第2章 Spark环境搭建/
2.1 安装环境准备/
2.1.1 操作系统准备/
2.1.2 Java环境准备/
2.1.3 Python环境准备/
2.1.4 Spark安装包下载/
2.1.5 Hadoop安装包下载/
2.2 Spark本地模式安装/
2.2.1 使用交互式pyspark运行代码/
2.2.2 宽窄依赖和阶段划分/
2.2.3 使用spark-submit提交代码/
2.3 Spark独立集群安装/
2.3.1 配置并启动Spark集群/
2.3.2 使用spark-submit提交代码/
2.3.3 Spark History Server历史服务/
2.3.4 独立集群模式的代码运行流程/
2.4 Spark on YARN模式安装/
2.4.1 安装Hadoop集群/
2.4.2 格式化NameNode/
2.4.3 启动Hadoop集群/
2.4.4 配置Spark运行在YARN上/
2.4.5 使用spark-submit提交代码/
2.4.6 Spark on YARN模式代码运行流程/
2.5 云服务模式Databricks介绍/
2.5.1 Databricks基本概念/
2.5.2 创建集群/
2.5.3 数据集成/
2.5.4 创建笔记本/
2.5.5 运行案例/
2.5.6 创建作业/
2.5.7 运行作业/
2.5.8 其他类型的作业/
2.6 本章小结/
第3章 数据分析基础/
3.1 什么是数据分析/
3.2 Python数据分析工具介绍/
3.2.1 数学计算库NumPy介绍/
3.2.2 数据分析库Pandas介绍/
3.3 数据分析图表介绍/
3.4 Python数据可视化工具介绍/
3.4.1 Matplotlib介绍/
3.4.2 Seaborn介绍/
3.4.3 Pyecharts介绍/
3.4.4 三种可视化工具的对比/
3.5 本章小结/
第4章 选择合适的开发工具/
4.1 使用Databricks探索数据/
4.1.1 使用笔记本开发代码/
4.1.2【实战案例】阿凡达电影评价分析/
4.2 使用JupyterLab探索数据/
4.2.1 创建虚拟环境/
4.2.2 安装JupyterLab/
4.2.3 集成Spark引擎/
4.2.4【实战案例】二手房数据分析/
4.3 使用PyCharm探索数据/
4.3.1 安装PyCharm/
4.3.2 安装Python/
4.3.3 创建PyCharm项目/
4.3.4 PyCharm插件介绍/
4.3.5【实战案例】招聘信息数据分析/
4.4 本章小结/
第5章 核心功能Spark Core/
5.1 SparkContext介绍/
5.2 RDD介绍/
5.3 RDD的特性/
5.4 RDD的创建/
5.4.1 通过并行化本地集合创建RDD/
5.4.2 通过外部文件系统数据创建RDD/
5.4.3 通过已存在的RDD衍生新的RDD/
5.5 RDD的算子/
5.5.1 什么是算子/
5.5.2 算子的分类/
5.6 常用的Transformation算子/
5.6.1 基本算子/
5.6.2 二元组相关的算子/
5.6.3 分区相关的算子/
5.7 常用的Action算子/
5.7.1 基本算子/
5.7.2 Executor端执行的算子/
5.8 RDD的持久化/
5.8.1 缓存/
5.8.2 缓存的特点/
5.8.3 检查点/
5.8.4 缓存和检查点的比较/
5.9 共享变量/
5.9.1 广播变量/
5.9.2 累加器/
5.10【实战案例】共享单车租赁数据分析/
5.10.1 数据集成/
5.10.2 不同月份的租赁数据分析/
5.10.3 不同时间的租赁数据分析/
5.10.4 不同周期的租赁数据分析/
5.10.5 不同维度的租赁数据分析/
5.10.6 天气对租赁需求的影响/
5.10.7 温度、风速对租赁需求的影响/
5.11 本章小结/
第6章 结构化数据处理Spark SQL/
6.1 Spark SQL概述/
6.1.1 什么是Spark SQL/
6.1.2 Spark SQL的特点/
6.2 Spark SQL的发展历程/
6.2.1 从HDFS到Hive/
6.2.2 从Hive到Shark/
6.2.3 从Shark到Spark SQL/
6.3 SparkSession介绍/
6.4 DataFrame概述/
6.4.1 什么是DataFrame/
6.4.2 DataFrame的组成/
6.5 DataFrame的创建/
6.5.1 通过RDD创建/
6.5.2 通过Pandas的DataFrame创建/
6.5.3 通过外部数据创建/
6.6 DataFrame的基本操作/
6.6.1 DSL语法风格/
6.6.2 Spark Join策略介绍/
6.6.3 SQL语法风格/
6.7 DataFrame的函数操作/
6.7.1 内置函数/
6.7.2 窗口函数/
6.7.3 自定义函数/
6.8 DataFrame的数据清洗/
6.8.1 删除重复行/
6.8.2 缺失值的处理/
6.9 DataFrame的持久化/
6.10 DataFrame的数据写出/
6.10.1 写出数据到文件/
6.10.2 写出数据到数据库/
6.11【实战案例】世界杯数据可视化分析/
6.11.1 世界杯成绩汇总信息分析/
6.11.2 世界杯比赛信息分析/
6.12 本章小结/
第7章 集成Hive数据仓库/
7.1 Spark on Hive操作数据仓库/
7.1.1 安装Hive/
7.1.2 启动元数据服务/
7.1.3 配置Spark on Hive/
7.1.4 验证Spark on Hive/
7.2 使用MySQL替换Hive元数据服务/
7.2.1 初始化MySQL/
7.2.2 配置Spark on MySQL/
7.2.3 验证Spark on MySQL/
7.3【实战案例】基于Hive数据仓库的电商数据分析/
7.3.1 数据集成/
7.3.2 爆款产品分析/
7.3.3 月交易情况分析/
7.3.4 忠诚客户分析/
7.3.5 客户区域分析/
7.4 本章小结/
第8章 Spark Streaming流式数据处理/
8.1 流式数据处理概述/
8.1.1 静态数据和流式数据/
8.1.2 批量计算和实时计算/
8.1.3 流式计算/
8.2 Spark Streaming概述/
8.3 StreamingContext介绍/
8.4 DStream介绍/
8.5 DStream的创建/
8.5.1 通过文件创建/
8.5.2 通过套接字创建/
8.5.3 通过RDD队列创建/
8.6 DStream的Transformation操作/
8.6.1 无状态转换/
8.6.2 有状态转换/
8.7 DStream的输出操作/
8.8 DStream的SQL操作/
8.9 DStream的持久化/
8.10【实战案例】地震数据处理分析/
8.10.1 数据集成/
8.10.2 震级大小分布分析/
8.10.3 震源深度分布分析/
8.10.4 震中坐标分布分析/
8.10.5 中等地震分布分析/
8.11 本章小结/
第9章 Structured Streaming结构化流处理/
9.1 编程模型/
9.1.1 基本概念/
9.1.2 事件时间和延迟数据/
9.1.3 容错语义/
9.2 流式DataFrame的创建/
9.2.1 通过文件源创建/
9.2.2 通过Socket源创建/
9.2.3 通过Rate源创建/
9.2.4 通过Kafka源创建/
9.3 流式DataFrame的操作/
9.3.1 事件时间窗口/
9.3.2 处理延迟数据和水印/
9.3.3 连接操作/
9.3.4 消除重复数据/
9.3.5 不支持的操作/
9.4 启动流式处理查询/
9.4.1 输出模式/
9.4.2 输出接收器/
9.4.3 触发器/
9.5 管理流式查询/
9.6 监控流式查询/
9.7【实战案例】气象数据处理分析/
9.7.1 数据集成/
9.7.2 云量分布分析/
9.7.3 气温分布分析/
9.7.4 降水量分布分析/
9.8 本章小结/
第10章 Spark机器学习库MLlib/
10.1 机器学习介绍/
10.1.1 基本概念/
10.1.2 评估指标/
10.1.3 主要过程/
10.1.4 基于大数据的机器学习/
10.2 MLlib介绍/
10.3 数据预处理/
10.3.1 缺失值处理/
10.3.2 无量纲化处理/
10.3.3 特征数据处理/
10.4 特征提取和转换/
10.5 回归算法介绍/
10.5.1 线性回归算法介绍/
10.5.2 回归树算法介绍/
10.6 分类算法介绍/
10.6.1 逻辑回归算法介绍/
10.6.2 支持向量机算法介绍/
10.7聚类算法介绍/
10.7.1K-means算法介绍/
10.7.2高斯混合模型介绍/
10.8【实战案例】信用卡欺诈数据分析/
10.8.1 数据预览/
10.8.2 机器学习训练/
10.9 本章小结/
第11章 综合实战:基于协同过滤的图书推荐系统/
11.1 项目介绍/
11.2 协同过滤算法/
11.2.1 协同过滤算法介绍/
11.2.2 相似度度量/
11.2.3 交替最小二乘法/
11.3 项目实现/
11.3.1 数据集成/
11.3.2 数据分析/
11.3.3 结果导出/
11.4 数据可视化/
11.4.1 Flask框架介绍/
11.4.2 推荐结果展示/
11.5 项目部署/
11.6 本章小结/
参考文献/