Spark 大数据开发学习笔记
欢迎来到 Spark 全栈开发笔记!本笔记以「项目驱动」为核心,从最基础的集群搭建开始,一步步带你吃透 RDD 编程、结构化查询、实时流处理、图计算、机器学习,最终落地企业级综合项目。全程配套可运行代码与真实业务场景,拒绝纸上谈兵。
笔记定位
这套笔记主打「能跑通、能落地、能面试」,每个知识点都对应可执行的实操案例,9 个项目环环相扣,学完就能直接对应企业大数据开发岗位的基础工作内容。
学前须知
✅ 适合人群
- 大数据专业在校学生,配套 Spark 课程同步学习
- 有 Hadoop 基础,想系统学习 Spark 计算引擎的开发者
- 想从 MapReduce 转型 Spark 的大数据从业人员
- 准备校招、社招大数据开发岗,需要系统复习 Spark 知识点的求职者
❌ 不适合人群
- 完全零基础、连 Linux 命令都不熟悉的纯小白(建议先补 Hadoop 基础)
- 5 年以上 Spark 资深开发(内容偏基础到进阶,深度有限)
- 只想背概念、不想动手跑代码的应试型选手
🎯 学完你将掌握
- Spark 三种运行模式与 Standalone / YARN 双集群搭建
- Scala 基础语法与 Spark 交互式开发、IDE 开发两种方式
- RDD 核心算子、Shuffle 机制、键值对聚合与性能优化
- Spark SQL 结构化数据处理、多表关联与窗口函数
- Spark Streaming 实时流计算、滑动窗口与 Kafka 对接
- GraphX 图计算、PageRank 算法与网页排名实战
- MLlib 机器学习库、特征工程与分类预测算法
- 企业级综合项目:广告流量作弊识别全流程开发
环境准备
基础环境
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| JDK | 1.8.0_xxx | Spark 3.x 官方推荐,兼容性最好 |
| Scala | 2.12.x / 2.13.x | 对应 Spark 版本选择,Spark 3.5 推荐 2.13 |
| Spark | 3.5.1 | 最新稳定长支持版,新特性完善 |
| Hadoop | 3.3.6 | YARN 模式必备,和 Hadoop 集群无缝对接 |
| 开发工具 | IDEA 社区版 / 专业版 | 写 Spark 项目首选,自带 Scala 插件 |
集群配置建议
| 节点 | 内存 | CPU | 角色 |
|---|---|---|---|
| master | 4G | 2核 | Master + NameNode + ResourceManager |
| slave1 | 3G | 2核 | Worker + DataNode + NodeManager |
| slave2 | 3G | 2核 | Worker + DataNode + NodeManager |
新手避坑
别用 1G 内存跑 Spark 集群! Spark Driver + Executor 都吃内存,给太少会频繁 OOM、GC overhead,排查一下午的问题,其实只是内存给少了。
三步快速上手
Step 1:跑通 Spark 集群
先把 Standalone 集群搭起来,启动 Master 和 Worker,能看到 8080 Web UI 上有活着的 Worker,就算入门成功。
目标成果:
- Spark 安装、环境变量配置、全节点同步
- Master + 2 Worker 正常启动
- Web UI 可访问,提交任务正常运行
👉 前往:项目1:搭建 Spark 集群
Step 2:写第一个 Spark 程序
用 Spark Shell 跑一个词频统计,感受 RDD 编程的「懒执行、行动算子触发」核心特性。
目标成果:
- 启动 spark-shell 交互式终端
- 读取文件、分词、统计、输出结果
- 理解转换算子和行动算子的区别
👉 前往:项目3:员工薪资数据查询统计
Step 3:跑通 IDE 开发
学会用 IDEA 打 jar 包,提交到集群运行,这是企业开发的标准方式。
目标成果:
- IDEA 创建 Maven 项目
- 编写 Spark 代码、打包
- spark-submit 提交到集群运行
👉 前往:项目4:用户访问日志统计
完整学习路线
按照「基础→编程→SQL→实时→图计算→机器学习→综合实战」的顺序循序渐进,9 个项目层层递进:
| 阶段 | 核心内容 | 难度 | 预计学习时长 |
|---|---|---|---|
| 筑基 | Spark 概述 + 集群搭建 | ⭐⭐ | 0.5 天 |
| 语法 | Scala 基础编程 | ⭐⭐ | 1 天 |
| 核心 | RDD 编程与 Shell 开发 | ⭐⭐⭐ | 1.5 天 |
| 进阶 | IDE 开发与日志分析 | ⭐⭐⭐ | 1.5 天 |
| 结构化 | Spark SQL 结构化处理 | ⭐⭐⭐ | 1.5 天 |
| 实时 | Spark Streaming 流计算 | ⭐⭐⭐⭐ | 2 天 |
| 拓展 | GraphX 图计算 | ⭐⭐⭐ | 1 天 |
| 算法 | MLlib 机器学习 | ⭐⭐⭐⭐ | 2 天 |
| 综合 | 广告作弊识别实战 | ⭐⭐⭐⭐ | 2 天 |
核心知识模块
🚀 模块一:Spark 原理与集群搭建
Spark 是大数据领域的「万能计算引擎」,比 MapReduce 快 100 倍,批处理、流处理、图计算、机器学习一把抓。
核心知识点:
- Spark 技术栈与整体架构
- 三种运行模式:Local / Standalone / YARN
- Standalone 集群搭建与角色分工
- 提交任务方式与 Web UI 监控
- 阿里云 EMR 集群部署
👉 进入学习
🔤 模块二:Scala 编程基础
Spark 原生用 Scala 开发,也是企业最常用的开发语言;简洁优雅,函数式编程和 Spark 天生绝配。
核心知识点:
- 变量、类型、函数、类与对象
- 集合操作、模式匹配
- 隐式转换、高阶函数
- 手机号码查询实战案例
👉 进入学习
🧩 模块三:RDD 编程(核心中的核心)
RDD 是 Spark 的灵魂——弹性分布式数据集,所有上层组件底层都是它。
核心知识点:
- RDD 三大特性与 DAG 执行机制
- 创建 RDD 的三种方式
- 转换算子:map、flatMap、filter、sortBy、distinct
- 行动算子:collect、take、count、reduce、save
- 键值对 RDD:reduceByKey、groupByKey、combineByKey
- 连接操作:join、leftOuterJoin、zip
- Shuffle 机制与性能优化
👉 进入学习
💻 模块四:IDE 企业级开发
企业里不是一直在 Shell 里写代码,都是 IDEA 开发、打 jar 包、提交集群运行。
核心知识点:
- IDEA 创建 Spark 项目
- Maven 依赖配置与打包
- spark-submit 提交命令详解
- 竞赛网站访问日志统计实战
👉 进入学习
📊 模块五:Spark SQL 结构化数据处理
写 SQL 就能跑 Spark,是现在企业最常用的方式;不用写复杂的 RDD 代码,分析师也能上手。
核心知识点:
- DataFrame / DataSet 模型
- 数据源读写:CSV、JSON、Parquet
- SQL 查询、分组聚合、多表 Join
- 窗口函数与 TopN 统计
- 水稻品种审定数据分析实战
👉 进入学习
⚡ 模块六:Spark Streaming 实时计算
准实时处理数据,比如实时统计热度、实时监控告警,是互联网公司的必备技能。
核心知识点:
- DStream 离散流模型
- 无状态计算与有状态计算
- 滑动窗口、滚动窗口
- 对接 Kafka 实时数据流
- 书籍热度实时计算实战
👉 进入学习
🕸️ 模块七:GraphX 图计算
专门处理关系型数据,比如社交关系、网页链接、路径规划,是 Spark 的大杀器。
核心知识点:
- 图数据模型:顶点、边、属性
- 常用图算子:度、路径、连通分量
- PageRank 核心算法
- 网页排名 Top10 实战
👉 进入学习
🤖 模块八:MLlib 机器学习库
Spark 自带的机器学习库,不用搭复杂的 Python 环境,就能在大数据上跑分布式算法。
核心知识点:
- 特征工程:向量化、归一化、特征提取
- 分类算法:逻辑回归、决策树
- 聚类算法:KMeans
- 模型评估与调优
- 饮用水源合格性预测实战
👉 进入学习
🎯 模块九:综合实战
把前面所有技术串起来,做一个完整的企业级项目,还原真实开发流程。
项目主题:广告检测的流量作弊识别 用到技术:RDD + SQL + 特征工程 + 规则识别 + 统计分析 项目产出:完整的作弊流量识别方案与可运行代码
👉 进入学习
完整项目实战清单
| 项目编号 | 项目名称 | 难度 | 核心技术 | 项目产出 |
|---|---|---|---|---|
| 项目1 | 搭建 Spark 集群 | ⭐⭐ | Standalone 集群、角色分工、提交任务 | 可用的 Spark 独立集群 |
| 项目2 | 查询手机号码信息 | ⭐⭐ | Scala 基础语法、集合操作 | 手机号归属地查询工具 |
| 项目3 | 查询和统计员工薪资数据 | ⭐⭐⭐ | Spark Shell、RDD 算子、聚合排序 | 员工薪资多维度统计 |
| 项目4 | 竞赛网站用户访问日志统计 | ⭐⭐⭐ | IDEA 开发、打包提交、日志分析 | 网站访问指标统计报告 |
| 项目5 | 水稻品种审定数据分析 | ⭐⭐⭐ | Spark SQL、多表查询、窗口函数 | 农业数据结构化分析报告 |
| 项目6 | 实时计算书籍热度 | ⭐⭐⭐⭐ | Spark Streaming、滑动窗口、状态计算 | 实时热度统计系统 |
| 项目7 | 网页得分排名 Top10 | ⭐⭐⭐ | GraphX、PageRank 算法 | 网页重要性排名工具 |
| 项目8 | 饮用水源合格性预测 | ⭐⭐⭐⭐ | MLlib、特征工程、分类算法 | 水质合格预测模型 |
| 项目9 | 广告检测流量作弊识别 | ⭐⭐⭐⭐ | 综合运用、规则引擎、多维度分析 | 企业级反作弊解决方案 |
📚 原理与架构资源
想深入底层原理?这些资料帮你吃透引擎盖下的 Spark:
- Spark 3.5.1 集群完整笔记:配置、参数、调优、排错全覆盖
- Spark 官方示例学习:官方测试数据生成与配套实战代码
- Spark 学习环境安装:Windows / Linux 双环境安装指南
- 阿里云 E-MapReduce(EMR)部署:企业级托管集群部署教程
🔗 相关资源
📖 扩展学习
想拓展深度、拔高视野?这些进阶内容值得一看:
Spark 硬核指南
- 上篇:为什么是 Spark?核心概念与第一个程序
- 中篇:引擎盖下的 Spark,与它撑起的整个生态
- 下篇:性能调优、生产实战与前沿技术
Spark 完全入门指南
- 上篇:基础与核心原理
- 中篇:技术栈与生态对比
- 下篇:实战调优与前沿
- 完整版:从零到硬核的大数据之旅
专项教程
- Spark 完整安装教程(Standalone 集群版)
- Spark on YARN 生产环境部署指南
👉 查看全部扩展资源
💡 学习避坑指南(新手必看)
- 别把 RDD 当集合用,它是懒的! 新手最懵的点:map、filter 写了半天,怎么没反应?因为它们只是「列计划」,遇到 collect、count 这种行动算子才会真的执行。
- Shuffle 是性能杀手,没事别乱触发 reduceByKey、groupByKey、join、sortBy、distinct 都会触发 Shuffle(数据跨节点洗牌),能少用就少用,能用 reduceByKey 就别用 groupByKey。
- 别随便 collect(),会把 Driver 撑爆 collect() 会把所有数据拉到本地,大数据量直接 OOM。看样本用 take(),存结果用 saveAsTextFile()。
- 不是所有场景都要 Spark 几千条数据用 Spark 还没本地 Python 快。Spark 的价值在「海量数据 + 并行计算」,别为了用而用。
- 序列化问题是常客 自定义类一定要实现 Serializable,不然一跑集群就报序列化错误,这是 Spark 开发最高频的坑。
- 内存调优不是瞎调参数 不是 executor-memory 越大越好,太多反而浪费;根据数据量、分区数合理分配,才是最优解。
下一步
准备好了的话,就从集群搭建开始你的 Spark 之旅吧:
想先了解整体生态?可以先看: