我正在努力解决
倾斜数据
数据帧中的问题。我介绍了一个基于
装箱算法
它应该在箱子(在我的例子中是分区)之间均匀分布数据。我的箱子数是
500,000
排。
我已经为每一行分配了一个箱子编号,该行应该属于哪个位置。箱子计数范围为
. 假设列名为
钥匙
.
理想情况下,当我基于列对数据帧执行重新分区操作时
钥匙
,它应该将数据均匀分布在
282个分区
,每个包含周围的记录
500,000
.
| key |count |
+-----+------+
|1 |495941|
|2 |499607|
|3 |498896|
|4 |502845|
|5 |498213|
|6 |501325|
|7 |502355|
|8 |501816|
|9 |498829|
|10 |498272|
|11 |499802|
|12 |501580|
|13 |498779|
|14 |498654|
...
...
|282 |491258|
但仍有一些分区包含多个键。例如,分区
101
和
115
合并为
1分区
,这是我意想不到的行为。
+----+------+
|key |count |
+----+------+
|101 |500014|
|115 |504995|
+----+------+
如果我编写一个自定义分区器,那么我必须将数据帧转换为rdd,并基于键列对rdd进行操作。但键列最初可以有重复项,如果我按分组,那么多个记录将组合在一起,这将破坏重新划分数据的逻辑。
如果有人能解释
重新编写
帮我纠正一下。