python - 如何在每个具有唯一键的多个节点之间划分 Spark Dataframe
问题描述
我是新手Spark Dataframe
。我在 Spark 集群中有一个带有 4 个节点的关键列的大型数据框。对于每个键,我在 Dataframe 中有几条记录;所以,只要内存有容量,我想在每个节点中都有相同键的记录。如果节点的内存已满,则将剩余数据移动到另一个节点。
你能指导我怎么做吗?
我研究过编写 Spark 自定义分区,该分区仅pair RDD
用于partionBy
. 它将每个唯一组合的数据写入不同的文件中。实际上,我不想使用 partitionBy,因为它会将结果写入不同的文件中。
非常感谢任何帮助。
解决方案
您的数据有偏差,因此未正确分区。
解决此问题的一种简单方法是对数据进行加盐处理,如本例所示。您将一个随机数添加到您的键中,执行聚合以减少 RDD 中的记录数,然后对较少的数据再次执行聚合。这样,您的初始大型数据集将在您的节点上均匀分区。
推荐阅读
- php - 是否有根据特定键进行排序的功能?
- python - 部署 SARIMA - Python
- spring-cloud-dataflow - 使用参数在 REST 中运行 Spring Cloud Dataflow 任务
- excel - 如果 combobox1 在 combobox2 列表中包含一个项目,则返回错误
- javascript - 每次我更改状态变量时反应原生类重新渲染
- hbase - java.lang.NoSuchMethodError:org.apache.hadoop.hbase.client.Scan.setRaw
- spring - @Entity 类没有映射
JBOSS EAP 7 应用程序中 persistence.xml 中的属性 - javascript - React 中的多个过滤器
- get - 是否可以安排 PowerBI 向 AWS API 网关发送 GET 请求?
- core-data - Core Data 使用 AppGroups 加载持久存储