gpt4 book ai didi

apache-spark - 如何在Spark中平均分配分区?

转载 作者:行者123 更新时间:2023-12-04 12:46:17 25 4
gpt4 key购买 nike

为了测试.repartition()的工作方式,我运行了以下代码:

rdd = sc.parallelize(range(100))
rdd.getNumPartitions()
rdd.getNumPartitions()产生 4。然后我跑了:
rdd = rdd.repartition(10)
rdd.getNumPartitions()

这次的 rdd.getNumPartitions()产生了 10,因此现在有10个分区。

但是,我通过以下方式检查了分区:
rdd.glom().collect()

结果给出了4个非空列表和6个空列表。为什么没有任何元素分配到其他6个列表中?

最佳答案

repartition()背后的算法使用逻辑来优化跨分区重新分配数据的最有效方法。在这种情况下,您的范围很小,并且无法找到进一步分解数据的最佳选择。如果要使用更大的范围(例如100000),您会发现它确实在重新分配数据。

如果要强制执行一定数量的分区,则可以根据数据的初始负载来指定分区数。在这一点上,即使它不一定是最佳数据,它也会尝试在各个分区之间平均分配数据。并行化功能对分区使用第二个参数

    rdd = sc.parallelize(range(100), 10)

如果您要说说从文本文件中读取内容,则同样的事情将起作用
    rdd = sc.textFile('path/to/file/, numPartitions)

关于apache-spark - 如何在Spark中平均分配分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38102013/

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