gpt4 book ai didi

apache-spark - spark 中的 coalesce(numPartitions) 是否经过洗牌?

转载 作者:行者123 更新时间:2023-12-02 08:15:51 25 4
gpt4 key购买 nike

我有一个关于 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

我的问题是

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

  2. coalesce(numPartitions) 是否经过洗牌?

最佳答案

coalesce 转换用于减少分区数。如果输出分区的数量小于输入,则应使用 coalesce。它可以根据默认禁用的 shuffle 标志(即 false)触发 RDD shuffling。

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

关于apache-spark - spark 中的 coalesce(numPartitions) 是否经过洗牌?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42034314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com