gpt4 book ai didi

apache-spark - spark 何时以及如何在 executor 上分配分区

转载 作者:行者123 更新时间:2023-12-04 05:16:01 24 4
gpt4 key购买 nike

spark 如何将分区分配给执行程序。

当我在带有 1 个驱动程序和 5 个执行程序的 spark shell 中运行以下行时:

> var data = sc.textFile("file") // auto generates 2 partitions
> data.count() // materialize partitions on two nodes
> data = data.repartition(10) // repartition data.count()
> data.count() // 10 partitions still on original 2 nodes

重新分区后,10 个分区仍然位于原来的两个节点上(共 5 个)。这似乎非常低效,因为 5 个任务在包含分区的每个节点上重复运行,而不是在节点之间均匀分布。对于在同一个 rdd 上重复多次的迭代任务,效率低下最为明显。

所以我的问题是,spark 如何决定哪个节点有哪个分区,有没有办法强制将数据移动到其他节点?

最佳答案

我只是在这里提供一个猜测来展示逻辑(不一定是真正发生的事情)。

让我们假设您的文件不是很大,即它适合 1 个 HDFS 块。并假设该块被复制到 2 个节点。如果您想在第三个节点上进行处理,则意味着您需要复制它。由于计数是一个相对较快的计算,可能是处理任务所花费的时间相对较少。
Spark 可能已经决定最好在本地等待并进行处理,而不是将数据 shuffle 到其他节点(您可以配置此参数)。

关于apache-spark - spark 何时以及如何在 executor 上分配分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41005448/

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