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

请说明在 Apache Spark 中,如何通过调节并行度与任务划分策略来提升作业的执行效率?

数据性能优化技术原理问题排查Apache Spark

考察说明

考查对 Spark 并行度与任务划分机制的理解及优化能力。

回答思路

  1. 【回答框架 1】Spark 并行度由 RDD 分区数决定,由输入数据、默认并行度和用户设置共同影响。合理并行度能充分利用集群资源,减少任务粒度导致的调度开销或数据倾斜。
  2. 【回答框架 2】调整并行度常用方法:读取阶段设置 spark.sql.files.maxPartitionBytes、spark.sql.shuffle.partitions,RDD 阶段使用 repartition 或 coalesce 调整分区数,还可通过配置 spark.default.parallelism 设置默认值。
  3. 【回答框架 3】任务划分优化:尽量使任务数据量均匀,遇到数据倾斜时可对 key 加盐或使用广播小表;减少宽依赖中 shuffle 数据量,使用 bucketing 或预聚合;控制任务粒度,避免过小导致调度压力或过大导致资源不均衡。
  4. 【回答框架 4】评估与调优:通过 Spark UI 观察 Stage 任务执行时间与数据分布,结合集群 CPU 核数与内存容量计算合适并行度(如 CPU 核数的 2-3 倍),并进行压测验证。
  5. 【关键点 1】并行度本质是分区数,直接影响任务并发度。
  6. 【关键点 2】主要调优参数包括 spark.default.parallelism 和 spark.sql.shuffle.partitions。
  7. 【关键点 3】repartition 增加分区数,coalesce 减少分区数。
  8. 【关键点 4】数据倾斜优化常用加盐、两阶段聚合、广播变量等方法。
  9. 【易错点 1】并行度并非越大越好,过大导致调度开销和资源竞争,过小则资源利用率低。
  10. 【易错点 2】盲目增加分区可能加剧数据倾斜,需结合数据分布调整。
  11. 【易错点 3】coalesce 可能导致数据重分布不均匀,需注意使用场景。