Я пытаюсь решить проблему перекос данных в кадре данных.Я ввел новый столбец, основанный на алгоритме упаковки бинов , который должен равномерно распределять данные между бинами (в моем случае это разделы).Мой счетчик для бина составляет 500 000 строк.Я назначил каждой строке номер ячейки, к которой должна принадлежать строка.Количество бинов варьируется от 1 до 282 .Допустим, имя столбца: ключ .
В идеале, когда я делаю операцию перераспределения данных в кадре на основе столбца ключ , он должен равномерно распределять данные между 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 на основе ключевого столбца.Но столбец Key может изначально иметь дубликаты, и если я сгруппируюBy, то несколько записей будут объединены вместе, и это нарушит логику для перераспределения данных.
Было бы здорово, если бы кто-то мог объяснить это странное поведение reparition и помогите мне исправить это.