如何根据执行器、内核和内存来确定spark(在Yarn上运行)的分区号。由于我是新的Spark,所以没有太多的实际情况的手我知道很多事情需要考虑来决定分区,但是任何生产场景的详细解释都会非常有帮助。提前谢谢
mspsb9vt1#
imo使用spark 3.0和aws emr 2.4.x以及自适应查询执行,通常最好让spark来处理。如果你真的想手动调整它的答案往往是复杂的。一个好的选择是拥有2到4倍的可用CPU数量。虽然这对于大多数数据集都很有用,但对于非常大和非常小的数据集来说,这都会产生问题。在这些情况下,将每个分区的容量定为128mb是很有用的。
1l5u6lss2#
并行集合的一个重要参数是要将数据集分割成的分区数。spark将为集群的每个分区运行一个任务。通常,集群中的每个cpu需要2-4个分区建议分区数为芯数的2/4*。因此,如果有7个执行器和5个核心,那么可以在752=70和754=140分区之间重新分区https://spark.apache.org/docs/latest/rdd-programming-guide.html
2条答案
按热度按时间mspsb9vt1#
imo使用spark 3.0和aws emr 2.4.x以及自适应查询执行,通常最好让spark来处理。如果你真的想手动调整它的答案往往是复杂的。一个好的选择是拥有2到4倍的可用CPU数量。虽然这对于大多数数据集都很有用,但对于非常大和非常小的数据集来说,这都会产生问题。在这些情况下,将每个分区的容量定为128mb是很有用的。
1l5u6lss2#
并行集合的一个重要参数是要将数据集分割成的分区数。spark将为集群的每个分区运行一个任务。通常,集群中的每个cpu需要2-4个分区
建议分区数为芯数的2/4*。
因此,如果有7个执行器和5个核心,那么可以在752=70和754=140分区之间重新分区
https://spark.apache.org/docs/latest/rdd-programming-guide.html