Реализующая группа с помощью карты уменьшить

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

Я не совсем понимаю, отображает ли он только ключи или выполняет операцию сокращения.

Как бы вы внедрили группу, используя карту / уменьшить?

1 ответ

Решение

Вопрос немного запутанный. Но вот удар по твоему намерению.

любой aggregate функция требует reduce этап. groupBy такая агрегатная функция. по факту groupBy в основном самое дорогое семейство агрегатных функций.

AFA код: здесь это ясно показывает:

 groupByKey(new HashPartitioner(numPartitions))

Обратите внимание, что HashPartitioner всегда выполняет shuffle: так что вы получаете полный reducer-side (в карте / уменьшить жаргон) операция.

Обновление ОП попросил более подробную информацию о том, как reduce работает.

Аналогично Map-Reduce reduce объединяет результаты из map этап в соответствии с настроенным Partitioner - который оценивает ключ каждой записи и распределяет по соответствующему разделу в соответствии с ключом. Это shuffle фаза.

Тогда reducer логично было бы применить указанное aggregate операция - и потенциально дополнительная having (т.е. фильтры на основе совокупных условий) и sorting (если бы они были local не "тотальный" порядок)

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