首页 > 解决方案 > Spark 1.6 如何计算重新分区值

问题描述

repartition(value) 是在什么基础上根据数据大小或其他东西计算出来的?

如果假设特定数据框中有 1 亿条记录,我们必须在重新分区中给出什么值?以及如何计算价值?

标签: apache-spark

解决方案


没有人能准确地告诉您需要多少个分区。最佳记录数取决于记录数、每条记录的大小以及您想用它做什么。

我建议从 200(默认值spark.sql.shuffle.partitions)开始,检查内存是否有任何问题,同时检查 Spark UI 中的任务持续时间和峰值执行内存。根据您的发现增加或减少分区的数量。您可能还想运行一些简单的基准测试。确保您始终拥有(数倍)多于#executors*cores_per_executors

请注意,如果您value根据数据大小进行查询,则需要两次查询数据,通常这不需要,有时它是有意义的(如果工作负载差异很大)。通常这可以通过粗略的近似值来改变(基于查询的输入参数,即它是否是(初始)满载、更新作业等


推荐阅读