Apache Spark — 慢作业的答案在执行计划和事件日志里
用本地模式 Spark 通过事件日志测量 shuffle、连接与数据倾斜
중급 · 课时 30 · 实验 10
课程大纲
驱动程序与作业
- 转换只累积计划,行动才启动作业并把它拆分为阶段和任务 reading
- 启动第一个作业并用事件日志确认——转换是惰性的,行动才触发工作 lab
- 测验:驱动程序与作业 quiz
模式与损坏的行
- 不要把模式交给推断,损坏的行不要丢弃而要分拣出来 reading
- 用三种模式读取合作方 CSV 中损坏的行 lab
- 测验:模式与损坏的行 quiz
DataFrame 与 SQL
阅读执行计划
- explain 是一张收据,显示 Spark 决定少读了什么 reading
- 用 explain 确认少读了多少 Parquet 数据 lab
- 测验:阅读执行计划 quiz
洗牌与分区数
- 洗牌是最昂贵的一步,200 个分区是一个不了解数据就定下的数字 reading
- 减少 200 个洗牌分区产生的文件和任务 lab
- 测验:洗牌与分区数 quiz
连接策略
- 连接的配对方式能让代价相差十倍 reading
- 用四种策略执行同一个连接,并在执行计划中确认 lab
- 测验:连接策略 quiz
数据倾斜
- 只有一个任务结束不了,原因在于一个键 reading
- 在一个机器人占 40% 点击的数据上测量并解决倾斜 lab
- 测验:数据倾斜 quiz
缓存与重算
- DataFrame 不是结果而是配方,所以每次都重新计算 reading
- 避免把同一计算做两次——缓存在执行计划中的样子 lab
- 测验:缓存与重算 quiz
写入文件
- 写入无法撤销,所以先定好模式和文件布局 reading
- 写出分区数据湖,覆盖它,并减少小文件 lab
- 测验:写入文件 quiz
Structured Streaming
- 流处理是一连串小批次,由检查点负责记忆 reading
- 每个到达的文件只处理一次,并丢弃迟到的数据 lab
- 测验:Structured Streaming quiz