gpt4 book ai didi

apache-spark - 什么是随机分区?

转载 作者:行者123 更新时间:2023-12-05 09:12:35 27 4
gpt4 key购买 nike

什么是更技术意义上的 spark.sql.shuffle.partitions?我见过像 here 这样的答案,它说:“配置在为连接或聚合改组数据时使用的分区数。”

这到底是什么意思?当这个数字更高或更低时,节点与节点之间的洗牌工作有何不同?

谢谢!

最佳答案

分区定义数据在集群中的位置。单个分区可以包含许多行,但所有行都将在一个节点上的单个任务中一起处理。

看看边缘情况,如果我们将数据重新分区到一个分区中,即使您有 100 个执行程序,也只会由一个执行程序处理。 Single partition explanation

另一方面,如果您有一个执行程序,但有多个分区,它们将全部(显然)在同一台机器上处理。 enter image description here

当一个执行器需要来自另一个执行器的数据时,就会发生混洗 - 基本示例是 groupBy 聚合操作,因为我们需要所有相关行来计算结果。无论我们在 groupBy 之前有多少个分区,在它之后 spark 都会将结果拆分为 spark.sql.shuffle.partitions

引用 Bill Chambers 和 Matei Zaharia 的“Spark - 权威指南”:

A good rule of thumb is that the number of partitions should be larger than the number of executors on your cluster, potentially by multiple factors depending on the workload. If you are running code on your local machine, it would behoove you to set this value lower because your local machine is unlikely to be able to execute that number of tasks in parallel.

因此,总而言之,如果您将此数字设置为低于集群运行任务的容量,您将无法使用其所有资源。另一方面,由于任务在单个分区上运行,因此拥有数千个小分区(我预计)会产生一些开销。

关于apache-spark - 什么是随机分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57803387/

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