Spark даже распределение данных - PullRequest
0 голосов
/ 30 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...