SuperAPI AI 工具集

spark-optimization

数据与分析

查看项目

更新于 10-16 08:02

技能介绍

用途:优化 Apache Spark 作业性能,包括分区、缓存与持久化、Shuffle 优化、内存与执行器调优,以及调试慢作业和缓解数据倾斜。

主要能力:给出生产环境优化模式。分区方面按每分区 128MB~256MB 估算分区数,用 repartition 均匀分布、coalesce 减少分区、partitionBy 写出分区、谓词下推裁剪数据。连接方面支持广播连接(小表小于 10MB)、排序合并连接、bucketBy 分桶连接(连接时无 Shuffle)和偏斜连接处理,可结合 AQE 与手动加盐。缓存方面使用 cache/persist 与 MEMORY_AND_DISK_SER 等存储级别,用 checkpoint 打断血缘。内存方面说明 spark.executor.memory、memoryOverhead、memory.fraction、storageFraction 等配置。Shuffle 方面建议预聚合、压缩、用 approx_count_distinct 替代 distinct count。格式方面推荐 Parquet/Delta,含压缩、列裁剪与 ZORDER。监控方面可用 explain 查看执行计划,并检查分区倾斜率。

使用方式:创建 SparkSession 时启用自适应查询执行,例如 spark.sql.adaptive.enabled、coalescePartitions.enabled、skewJoin.enabled 设为 true,使用 KryoSerializer,并设置 spark.sql.shuffle.partitions。可参考资料中的生产配置模板与快速开始代码。

适用场景:慢 Spark 作业优化、内存与执行器配置调优、分区策略实现、性能问题调试、大数据集流水线扩展、减少 Shuffle 与数据倾斜。

限制:与 Spark 优化无关的任务不适用;资料未提供具体价格、平台支持范围与量化效果;上述配置与阈值需结合实际集群验证。