根据执行器、内核和内存决定 spark 中的分区数(运行 on YARN)

decide no of partition in spark (running on YARN) based on executer ,cores and memory

如何根据执行器、内核和内存确定 spark 中的分区数(运行 on YARN)。 由于我是 spark 的新手,所以对实际场景没有太多了解

我知道决定分区需要考虑很多事情,但任何详细的生产一般场景解释都会非常有帮助。

提前致谢

One important parameter for parallel collections is the number of partitions to cut the dataset into. Spark will run one task for each partition of the cluster. Typically you want 2-4 partitions for each CPU in your cluster

分区数建议为2/4 * 核心数

所以如果你有 7 个执行器和 5 个核心,你可以在 7*5*2 = 70 和 7*5*4 = 140 个分区之间重新分区

https://spark.apache.org/docs/latest/rdd-programming-guide.html

使用 spark 3.0 和 AWS EMR 2 的 IMO。4.x 通过自适应查询执行,您通常最好让 spark 处理它。如果您确实想手动调整它,答案通常会很复杂。一个好的选择是拥有 2 或 4 倍的可用 cpu 数量。虽然这对大多数数据大小很有用,但对于非常大和非常小的数据集就会出现问题。在这些情况下,每个分区的目标是 ~128MB 是有用的。