СПАРК: Понимание метода объединения? - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь понять метод слияния в искре.

У меня есть JavaRDD<String> (который состоит из 16310 строк), и я хочу сохранить его в 233 файлах. (один файл с 70 строками)

Сначала я попробовал это с trainDataFeatures.repartition(233).saveAsTextFile(outputPathTrainFeatures);

Это хорошо работает, но я не хочу перетасовывать свои данные. поэтому я попробовал это с: trainDataFeatures.coalesce(233, false).saveAsTextFile(outputPathTrainFeatures);

здесь я получаю только 4 выходных файла. Не тасуется, а только 4 !!! Это действительно раздражает. Может быть, кто-то может помочь мне с этим вопросом.

1 Ответ

0 голосов
/ 09 июля 2019

Я думаю, что в этом весь смысл и самая большая разница между coalesce и repartition.

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

По сути, тот факт, что coalesce не создает для вас дополнительные разделы, является особенностью coalesce.

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

...