Spark даже распределение данных
Я пытаюсь решить проблему перекоса данных в кадре данных. Я ввел новый столбец, основанный на алгоритме упаковки бинов, который должен равномерно распределять данные между бинами (в моем случае это разделы). Мой счетчик для 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, то несколько записей будут объединены вместе, и это нарушит логику для перераспределения данных.
Было бы здорово, если бы кто-то смог объяснить это странное поведение повторения и помочь мне исправить его.