为什么硬编码重新分区值

时间:2017-05-09 13:16:32

标签: apache-spark distributed-computing partition

查看一些示例spark代码,我看到重新分区或合并中的数字是硬编码的:

val resDF = df.coalesce(16)

管理此参数的最佳方法是,当群集在几秒钟内动态updated时,此硬编码值变得无关紧要。

1 个答案:

答案 0 :(得分:2)

在示例中,通常会看到硬编码值,因此您不必担心,我的意思是随意修改示例。我的意思是分区文档中充满了硬编码值,但这些值只是示例。

关于分区数量的经验法则是:

  

人们希望他的RDD拥有与产品一样多的分区   执行者数量,使用核心数量为3(或者4)。   当然,这是一种启发式方法,它实际上取决于你的   应用程序,数据集和集群配置。

但请注意,重新分配不是免费的,因此在极其动态的环境中,您必须确保重新分区的开销对于此操作所获得的收益可以忽略不计。

如我在answer中提到的那样,合并和重新分配可能会有不同的成本。