Agent Skills
返回列表
📊

Apache Spark 生产调优

数据分析 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/spark-optimization。

技能介绍

慢作业从哪来

生产里的 Spark 管道一旦变慢,常见根因不是「机器不够」,而是 Shuffle、数据倾斜、分区不合理、序列化与 GC/内存溢出 叠在一起。宽依赖带来的网络与磁盘 I/O、任务时长极不均匀、以及不当的 collect 或 UDF,都会把单次批处理或流式作业拖到不可接受。

技能怎么用

本技能围绕 Apache Spark 的执行模型与关键性能因素,给出可落地的优化路径,而不是泛泛的配置列表:

  • 分区:控制并行度与单分区体量(常见目标约 128MB~256MB 量级)
  • 连接:小表 广播,减少无谓 Shuffle
  • Shuffle:尽量缩小宽转换面,配合倾斜处理(如加盐、广播 join)
  • 内存与格式:执行器内存/GC、Kryo、Parquet/Delta 等列式与压缩
  • 缓存:按需持久化,避免过度占用有限内存
  • 观测:用 Spark UI 看倾斜、 spill、GC

文档中按模式拆成七块(分区、连接、缓存、内存、Shuffle、数据格式、监控调试),并附配置速查与 implementation-playbook 级示例入口。实践上建议优先 启用 AQE(自适应查询执行),并用 .take(1) / .isEmpty() 替代对大表滥用 .count()。

适用边界

任务与 Spark 性能调优无关、或需要本技能范围外的其他栈与工具时,不必启用。优化前需明确目标、约束与输入数据特征;改完配置或 DAG 后应在 UI 与端到端耗时上验证,而不是只改参数表。

使用场景

  • 批处理 ETL 在宽依赖 join 后耗时翻倍,需要在 DAG 上缩小 Shuffle 并排查倾斜键
  • YARN 或 K8s 上 Spark 作业频繁 spill/GC,要重设 executor 内存与分区大小
  • 单分区过大或过小导致并行度失衡,要为 TB 级数据集定分区与 AQE 策略
  • Spark UI 里少数 task 拖尾,要用广播 join、加盐等方式定位并缓解数据倾斜

适合人员

  • 维护离线数仓 Spark 作业的数据工程师,常处理 join/aggregate 变慢与 shuffle 成本
  • 负责集群资源与默认 Spark conf 的平台工程师,需统一 executor 与内存基线
  • 写 PySpark/Scala 管道的分析工程师,遇到倾斜导致 stage 时长极不均匀
  • 通过 Spark UI 查 stage、GC、溢出的 SRE,要把现象对应到分区与缓存策略