繁体   English   中英

当 shuffle 分区大于 200 时会发生什么(数据帧中的 spark.sql.shuffle.partitions 200(默认情况下))

[英]what happens when shuffle partition is greater than 200( spark.sql.shuffle.partitions 200(by default) in dataframe)

spark sql 聚合操作,它对数据进行混洗,即 spark.sql.shuffle.partitions 200(默认情况下)。 当 shuffle 分区大于 200 时,性能会发生什么变化。

当分区数大于 2000 时,Spark 使用不同的数据结构进行 shuffle bookkeeping。因此,如果分区数接近 2000,则将其增加到 2000 以上。

但我的问题是当 shuffle 分区大于 200(比如说 300)时会出现什么行为。

根据为作业分配足够资源的相对较大的集群上的典型工作负载,选择数字 200 作为默认值。 否则,应根据 2 个因素选择此数字 - 可用内核数和分区大小(建议将分区保持在 100Mb 左右)。 选择的分区数应该是可用内核数的乘积,但不应很大(通常是内核数的 1-3 倍)。 如果分区数大于默认值,则不应更改 Spark 的行为 - 它只会增加 Spark 需要执行的任务数)。

你可以在 Spark + AI Summit 2019 上观看这个演讲——它涵盖了很多关于 Spark 程序优化的细节,包括分区数量的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM