火花中的合并(numPartitions)是否会进行改组?

Sur*_*aja 2 apache-spark

我在spark变换函数中有一个简单的问题.

coalesce(numPartitions) - 将RDD中的分区数减少为numPartitions.过滤大型数据集后,可以更有效地运行操作.

val dataRDD = sc.textFile("/user/cloudera/inputfiles/records.txt")
val filterRDD = dataRDD.filter(record => record.split(0) == "USA")
val resizeRDD = filterRDD.coalesce(50)
val result    = resizeRDD.collect
Run Code Online (Sandbox Code Playgroud)

我的问题是

  1. coalesce(numPartitions)是否会从filterRDD中删除空分区?

  2. 合并(numPartitions)是否经过改组?

aba*_*hel 6

coalesce改造用于减少分区的数量.coalesce如果输出分区的数量小于输入,则应使用此选项.它可以触发RDD混洗,具体取决于默认禁用的shuffle标志(即false).

如果分区数大于当前分区数并且您使用的coalesce方法没有shuffle = true标志,则分区数保持不变.coalesce不保证将删除空分区.例如,如果您有20个空分区和10个带数据的分区,则在调用后仍会有空分区rdd.coalesce(25).如果你使用coalesceshuffle设置为true,那么这将等同于repartition方法,数据将在分区中均匀分布.