Java 在spark中,设置conf spark.default.parallelism和调用rdd.coalesce()方法有什么区别?

Java 在spark中,设置conf spark.default.parallelism和调用rdd.coalesce()方法有什么区别?,java,apache-spark,rdd,Java,Apache Spark,Rdd,在spark中,设置conf spark.default.parallelism和调用rdd.coalesce()方法有什么区别 两者的结果是否相同?根据,spark.default.parallelism是 RDD中由以下转换返回的默认分区数 join,reduceByKey,以及并行化(当用户未设置时) 默认值为: 对于reduceByKey和join等分布式洗牌操作 父RDD中的最大分区数 对于像这样的操作 并行化,无父RDD,具体取决于群集管理器: 本地模式:本地计算机上的磁芯数 细晶粒

在spark中,设置conf spark.default.parallelism和调用rdd.coalesce()方法有什么区别

两者的结果是否相同?

根据,
spark.default.parallelism

RDD中由以下转换返回的默认分区数
join
reduceByKey
,以及
并行化
(当用户未设置时)

默认值为:

对于reduceByKey和join等分布式洗牌操作 父RDD中的最大分区数

对于像这样的操作 并行化,无父RDD,具体取决于群集管理器:

本地模式:本地计算机上的磁芯数

细晶粒 模式:8

其他:所有执行器节点上的内核总数或2, 以较大者为准

rdd.coalesce()
方法允许您减少rdd中的分区数,例如,通过调用
rdd.coalesce(1)
您将分区数减少到1

因此,它们通常不会给出相同的结果,但是您可以想象
spark.default.parallelism
的设置与

rdd.{transformations...}.repartition({value of spark.default.parallelism})
join
reduceByKey
转换之后