用途:该技能面向 Apache Spark 作业的性能优化,覆盖分区策略、内存管理、shuffle 优化与执行器调优,适合在作业变慢、需要排查性能问题或扩展大规模数据处理管道时使用。
主要能力:围绕 Spark 执行模型(Driver→Job→Stage→Task)分析关键性能因素,包括 shuffle 带来的网络与磁盘 I/O、数据倾斜导致的任务耗时不均、序列化带来的 CPU 开销、内存导致的 GC 压力与溢写,以及分区数量对并行度的影响。对应手段包括减少宽依赖转换、使用加盐与广播连接处理倾斜、采用 Kryo 序列化与列式格式、调优执行器内存,以及按每分区约 128MB 到 256MB 的规模设置分区。
必要用法:可开启自适应查询执行(AQE)及其合并分区、倾斜连接等配置,搭配 Kryo 序列化与合理的 shuffle 分区数;读取时使用 Parquet 等列式格式,转换中优先用内置函数而非 UDF,对小表使用广播连接,并通过 Spark UI 观察倾斜、溢写与 GC。示例配置包含 spark.sql.adaptive.enabled、spark.sql.adaptive.coalescePartitions.enabled、spark.sql.adaptive.skewJoin.enabled、spark.serializer 与 spark.sql.shuffle.partitions 等参数。更多细节模式放在 references/details.md 中。
适用场景与限制:适用于优化慢作业、调优内存与执行器、实现高效分区、调试 Spark 性能、扩展管道、降低 shuffle 与数据倾斜。应避免对大结果调用 collect、非必要使用 UDF、过度缓存、忽视数据倾斜,以及用 .count() 判断存在性(宜用 .take(1) 或 .isEmpty())。资料未提供具体版本、平台与限制条件。