Точные детали будут зависеть от вашей схемы сокращения карты.Но идея заключается в следующем.На фазе карты вы генерируете два типа пар ключ / значение.(1, {name:john type:boss})
и (3, {worker-id:1 name:john type:worker})
.В фазе сокращения вы получаете все значения для ключа, сгруппированные вместе.Если там есть запись типа boss, вы удаляете эту запись и заполняете имя супервизора других записей.Если нет, то вы удаляете эти записи на полу.
В основном вы используете тот факт, что данные группируются по ключу, а затем обрабатываются вместе в редукторе для выполнения объединения.В некоторых реализациях Map-Reduce вы постепенно получаете пары ключ / значение, объединенные в Redu. В этих реализациях вы не можете выбросить записи, у которых уже нет босса, поэтому вам в конечном итоге понадобится карта-уменьшить-уменьшитьэтот последний этап фильтрации.)