spark.default.parallelism
和 spark.sql.shuffle.partitions
是 Spark 中两个控制并行度的配置参数,但它们作用的场景和用途不同:
sparkdefaultparallelism_2">spark.default.parallelism
- 用途:
spark.default.parallelism
用于控制 RDD 中的默认分区数。 - 适用场景:在使用
SparkContext.parallelize
或者执行非 Shuffle 类操作(例如map
、filter
)创建 RDD 时,如果未显式指定分区数,那么 Spark 会用spark.default.parallelism
的值作为分区数量。 - 默认值:通常,
spark.default.parallelism
会根据集群中的 CPU 核心数来决定,通常是SparkContext.defaultParallelism
的 2 倍,即每个核对应 2 个分区。 - 作用时间:主要影响非 Spark SQL 操作的 RDD,并在无指定分区数时起作用。
sparksqlshufflepartitions_8">spark.sql.shuffle.partitions
- 用途:
spark.sql.shuffle.partitions
用于控制 Spark SQL 查询中 Shuffle 阶段的分区数。 - 适用场景:在执行 Spark SQL 或 DataFrame API 操作时(如
groupBy
、join
、orderBy
等涉及 Shuffle 的操作),Spark 会依据spark.sql.shuffle.partitions
的值来决定 Shuffle 阶段的分区数量。 - 默认值:该参数的默认值是 200,但可以根据数据规模、集群资源等进行调整,以优化性能。
- 作用时间:此参数仅影响 Spark SQL 的 Shuffle 操作,与 RDD 操作无关。
异同点总结
- 异同:
- 配置建议: