2016-06-02 2 views
0

У меня есть искровое задание, которое обрабатывает большой объем данных и записывает результаты на S3. Во время обработки у меня может быть более 5000 разделов. Прежде чем я напишу на S3, я хочу уменьшить количество разделов, поскольку каждый раздел выписывается как файл.Spark Coalesce Больше секций

В некоторых других случаях у меня может быть только 50 разделов во время обработки. Если бы я хотел объединиться, а не перераспределять по соображениям производительности, что произойдет.

В документах сказано, что coalesce следует использовать только в том случае, если количество выходных разделов меньше ввода, но что происходит, если это не так, это, похоже, не вызывает ошибки? Означает ли это, что данные неверны или проблемы с производительностью?

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

ответ

2

С умолчанию PartitionCoalescer, если количество разделов больше, чем текущее количество разделов, и вы не установите shuffle в true то количество разделов остается неизменным.

coalesce с shuffle, установленным в true с другой стороны, это эквивалентно repartition с тем же значением numPartitions.