SQL面试题更新 2026-08-03

在 Spark SQL 中,并行度是如何配置的?它会对查询性能产生什么影响?

考察说明

考查对 Spark SQL 并行度配置及其性能影响的理解

回答思路

  1. 【回答框架 1】并行度在 Spark SQL 中主要指任务执行的并行程度,由分区数决定。配置方式包括:通过 spark.sql.shuffle.partitions 设置 shuffle 阶段的分区数,默认 200;通过 spark.default.parallelism 设置 RDD 的默认并行度;通过 repartition 或 coalesce 调整分区数。
  2. 【回答框架 2】并行度对查询性能的影响:分区过少会导致资源利用不足,单个任务处理数据量大,增加 shuffle 和 I/O 压力;分区过多会增加任务调度和通信开销,每个任务处理数据量小,可能导致小文件问题。合适的并行度应平衡资源利用和任务开销。
  3. 【回答框架 3】调整并行度需考虑数据量、集群资源(CPU 核心数)和查询特性。一般建议分区数接近集群可用核心数的倍数。实际中通过 spark.sql.shuffle.partitions 和动态资源分配来优化。
  4. 【关键点 1】Spark SQL 通过 spark.sql.shuffle.partitions 控制 shuffle 分区数,默认 200。
  5. 【关键点 2】并行度影响资源利用率和任务调度开销,需根据数据量和集群资源配置。
  6. 【关键点 3】可以使用 repartition 和 coalesce 调整分区数,前者增加分区,后者减少分区。
  7. 【关键点 4】并行度设置要避免数据倾斜,可考虑使用 salting 或调整分区键。
  8. 【易错点 1】不要盲目设置很大并行度,会导致大量小任务和小文件,增加调度开销。
  9. 【易错点 2】并行度设置不直接解决数据倾斜,需单独处理。