我在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)
我的问题是
coalesce(numPartitions)是否会从filterRDD中删除空分区?
合并(numPartitions)是否经过改组?
该coalesce改造用于减少分区的数量.coalesce如果输出分区的数量小于输入,则应使用此选项.它可以触发RDD混洗,具体取决于默认禁用的shuffle标志(即false).
如果分区数大于当前分区数并且您使用的coalesce方法没有shuffle = true标志,则分区数保持不变.coalesce不保证将删除空分区.例如,如果您有20个空分区和10个带数据的分区,则在调用后仍会有空分区rdd.coalesce(25).如果你使用coalesceshuffle设置为true,那么这将等同于repartition方法,数据将在分区中均匀分布.
| 归档时间: |
|
| 查看次数: |
2057 次 |
| 最近记录: |