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, то несколько записей будут объединены вместе, и это нарушит логику для перераспределения данных.

Было бы здорово, если бы кто-то смог объяснить это странное поведение повторения и помочь мне исправить его.

0 ответов

Другие вопросы по тегам