Как сделать поиск (или объединение) с map-Reduce? - PullRequest
2 голосов
/ 22 апреля 2011

Как я могу использовать набор ввода

{worker-id:1 name:john supervisor-id:3}
{worker-id:2 name:jane supervisor-id:3}
{worker-id:3 name:bob}

и выдаем выходной набор

{worker-id:1 name:john supervisor-name:bob}
{worker-id:2 name:jane supervisor-name:bob}

с использованием "чистой" структуры сокращения карт, т. Е. Только с фазой карты и фазой сокращения, но без каких-либо дополнительных функций, таких как поиск в CouchDB?

Ответы [ 2 ]

3 голосов
/ 29 апреля 2011

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

В основном вы используете тот факт, что данные группируются по ключу, а затем обрабатываются вместе в редукторе для выполнения объединения.В некоторых реализациях Map-Reduce вы постепенно получаете пары ключ / значение, объединенные в Redu. В этих реализациях вы не можете выбросить записи, у которых уже нет босса, поэтому вам в конечном итоге понадобится карта-уменьшить-уменьшитьэтот последний этап фильтрации.)

0 голосов
/ 23 апреля 2011

Существует только один входной файл или более Я имею в виду, возможен ли случай, когда у нас есть файл, в котором один из его идентификатор-работника имеет идентификатор-супервизора и его описания (имя этого идентификатор-супервизора) ) быть в другом файле ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...