首页 > 解决方案 > 如何在每个具有唯一键的多个节点之间划分 Spark Dataframe

问题描述

我是新手Spark Dataframe。我在 Spark 集群中有一个带有 4 个节点的关键列的大型数据框。对于每个键,我在 Dataframe 中有几条记录;所以,只要内存有容量,我想在每个节点中都有相同键的记录。如果节点的内存已满,则将剩余数据移动到另一个节点。

你能指导我怎么做吗?

我研究过编写 Spark 自定义分区,该分区仅pair RDD用于partionBy. 它将每个唯一组合的数据写入不同的文件中。实际上,我不想使用 partitionBy,因为它会将结果写入不同的文件中。

非常感谢任何帮助。

标签: pythonscalaapache-spark

解决方案


您的数据有偏差,因此未正确分区。

解决此问题的一种简单方法是对数据进行加盐处理,如本例所示。您将一个随机数添加到您的键中,执行聚合以减少 RDD 中的记录数,然后对较少的数据再次执行聚合。这样,您的初始大型数据集将在您的节点上均匀分区。


推荐阅读