перераспределение искр по колонкам - PullRequest
0 голосов
/ 29 ноября 2018

Я новичок в спарке и пытаюсь решить проблему искаженных данных.Я использую алгоритм коллеги для распределения данных на основе ключевого столбца.Но проблема в том, что когда я перераспределяю (col ("keyColumn")) фрейм данных, spark объединяет несколько разделов и создает большие выходные файлы.Я предполагаю, что это из-за key.Hashcode ()% num_partitions.

Это распределение данных выглядит так: максимум один файл может иметь 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|

Но когда япосмотрите в файлы после перераспределения, файл содержит более 2 ключей, что удваивает размер файла.

+----+------+
|key |count |
+----+------+
|101 |500014|
|115 |504995|
+----+------+

Я также пытался генерировать простые случайные простые ключи вместо инкрементных ключей разделения, но все еще малофайлы больше по размеру и содержат более одного ключа.

Когда я использую перераспределение (max_partition_no, col ("KeyColumn")), это намного больше перемешивает данные, и я получаю гораздо большие файлы размером около 900 МБ.Ожидаемый размер файла составляет от 250 до 350 МБ.

Мой вопрос: как мне убедиться, что перераспределение работает?Кроме того, как передать пользовательский разделитель путем переопределения hashCode для функции перераспределения?

...