数据岗位面试题更新 2026-08-05

请阐述在 PySpark 环境下处理数据倾斜的常用策略,并列举可用的性能调优方法。

数据性能优化方案权衡问题排查PySpark

考察说明

考查对 PySpark 数据倾斜问题及其调优策略的理解。

回答思路

  1. 【回答框架 1】数据倾斜本质是分区数据量不均导致部分任务执行缓慢,根源包括 key 分布不均、join 或 groupBy 操作中热点 key 等。
  2. 【回答框架 2】调优方案包括:增加分区数(如 repartition、coalesce),对热点 key 加盐(如附加随机前缀)后再聚合或 join,使用广播变量优化 join,以及调整 Spark 配置如 spark.sql.shuffle.partitions 等。
  3. 【回答框架 3】具体操作时,需先定位倾斜任务,通过 Spark UI 观察 stage 和 task 耗时,确认倾斜 key,再针对不同操作(如 groupBy、join)选择合适的策略。
  4. 【回答框架 4】还需注意加盐后需二次聚合去除前缀,广播变量适用于小表场景,且应结合数据量和资源情况评估效果。
  5. 【回答框架 5】最终调优需通过实验对比,验证方案有效性和性能提升。
  6. 【关键点 1】数据倾斜源于分区数据量不均,常见于 join、groupBy 和 distinct 操作。
  7. 【关键点 2】常用策略包括加盐、广播变量、增加分区数和调整 shuffle 分区数。
  8. 【关键点 3】加盐后需要二次聚合,广播变量仅适合小表。
  9. 【关键点 4】通过 Spark UI 定位倾斜任务,针对性优化。
  10. 【关键点 5】调优需结合数据特征和资源,进行迭代测试。
  11. 【易错点 1】加盐不当可能引入数据膨胀和二次聚合开销。
  12. 【易错点 2】广播变量不适合大表,会因内存不足导致 OOM。
  13. 【易错点 3】仅增加分区数可能无法解决热点 key 问题,需结合加盐等策略。