# SUMMARY * [简介](./README.md) * [开篇词 | Spark性能调优,你该掌握这些“套路”](./docs/352065.md) * [01 | 性能调优的必要性:Spark本身就很快,为啥还需要我调优?](./docs/352035.md) * [02 | 性能调优的本质:调优的手段五花八门,该从哪里入手?](./docs/352577.md) * [03 | RDD:为什么你必须要理解弹性分布式数据集?](./docs/353297.md) * [04 | DAG与流水线:到底啥叫“内存计算”?](./docs/353808.md) * [05 | 调度系统:“数据不动代码动”到底是什么意思?](./docs/355028.md) * [06 | 存储系统:空间换时间,还是时间换空间?](./docs/355081.md) * [07 | 内存管理基础:Spark如何高效利用有限的内存空间?](./docs/355662.md) * [08 | 应用开发三原则:如何拓展自己的开发边界?](./docs/357197.md) * [09 | 调优一筹莫展,配置项速查手册让你事半功倍!(上)](./docs/357342.md) * [10 | 调优一筹莫展,配置项速查手册让你事半功倍!(下)](./docs/357885.md) * [11 | 为什么说Shuffle是一时无两的性能杀手?](./docs/359907.md) * [12 | 广播变量(一):克制Shuffle,如何一招制胜!](./docs/359924.md) * [13 | 广播变量(二):如何让Spark SQL选择Broadcast Joins?](./docs/360837.md) * [14 | CPU视角:如何高效地利用CPU?](./docs/362710.md) * [15 | 内存视角(一):如何最大化内存的使用效率?](./docs/362734.md) * [16 | 内存视角(二):如何有效避免Cache滥用?](./docs/363445.md) * [17 | 内存视角(三):OOM都是谁的锅?怎么破?](./docs/365238.md) * [18 | 磁盘视角:如果内存无限大,磁盘还有用武之地吗?](./docs/365252.md) * [19 | 网络视角:如何有效降低网络开销?](./docs/366265.md) * [20 | RDD和DataFrame:既生瑜,何生亮?](./docs/367807.md) * [21 | Catalyst逻辑计划:你的SQL语句是怎么被优化的?(上)](./docs/367832.md) * [22 | Catalyst物理计划:你的SQL语句是怎么被优化的(下)?](./docs/369519.md) * [23 | 钨丝计划:Tungsten给开发者带来了哪些福报?](./docs/369604.md) * [24 | Spark 3.0(一):AQE的3个特性怎么才能用好?](./docs/369687.md) * [25 | Spark 3.0(二):DPP特性该怎么用?](./docs/372234.md) * [26 | Join Hints指南:不同场景下,如何选择Join策略?](./docs/373070.md) * [27 | 大表Join小表:广播变量容不下小表怎么办?](./docs/373089.md) * [28 | 大表Join大表(一):什么是“分而治之”的调优思路?](./docs/374729.md) * [29 | 大表Join大表(二):什么是负隅顽抗的调优思路?](./docs/374764.md) * [30| 应用开发:北京市小客车(汽油车)摇号趋势分析](./docs/374776.md) * [31 | 性能调优:手把手带你提升应用的执行性能](./docs/375383.md) * [Spark UI(上)| 深入解读Spark作业的“体检报告”](./docs/427973.md) * [Spark UI(下):深入解读Spark作业的“体检报告”](./docs/427998.md) * [期末考试 | “Spark性能调优”100分试卷等你来挑战!](./docs/374805.md) * [结束语 | 在时间面前,做一个笃定学习的人](./docs/377002.md)