MapReduce отсортированный итератор - PullRequest
1 голос
/ 12 октября 2011

Я читаю исходный код MapRedcue, чтобы лучше понять внутренний механизм MapReduce.И у меня есть проблема, когда я пытаюсь понять, как данные, полученные на этапе карты, объединяются и отправляются, чтобы уменьшить функцию для дальнейшей обработки.Исходный код выглядит слишком сложным, и я просто хочу знать его концепции.

Что я хочу знать, так это то, как значения (как параметр Iterator) сортируются перед передачей в функцию redu ().В MapTask.runOldReducer () он создаст ReduceValuesIterator, передавая RawKeyValueIterator, где будет вызван Merger.merge () и будет выполнено множество действий (например, сбор сегментов).После прочтения кода мне кажется, что он пытается только отсортировать по ключу, и значения, сопровождаемые этим ключом, будут объединены / собраны без удаления.Например, map () может выдать

    Key                              Value
    http://www.abcfood.com/aLink     object A
    http://www.abcfood.com/bLink     object B
    http://www.abcfood.com/cLink     object C

. Тогда в redu () ключ

будет http://www.abcfood.com/, а значения будут содержать объект A, объект B и объектC.

То есть сортируется по ключу http://www.abcfood.com/? Это правильно?Или что это сортировать, а затем передать, чтобы уменьшить функцию?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 13 октября 2011

при условии, что это ваш ввод:

Key                              Value
http://www.example.com/asd       object A
http://www.abcfood.com/aLink     object A
http://www.abcfood.com/bLink     object B
http://www.abcfood.com/cLink     object C
http://www.example.com/t1        object X

редуктор получит это: (нет гарантии порядка значений)

Key                              Values
http://www.abcfood.com/          [ "object A", "object C", "object B" ]
http://www.example.com/          [ "object X", "object A" ]
0 голосов
/ 14 января 2013

Так есть ли возможность получить заказанные значения в редукторе?Мне нужно работать с отсортированными значениями (рассчитать разницу между значениями, переданными с ключом).Я столкнулся с проблемой :) http://cornercases.wordpress.com/2011/08/18/hadoop-object-reuse-pitfall-all-my-reducer-values-are-the-same/

Я понимаю, что плохо копировать значения в редуктор и затем заказывать их.Я могу получить переполнение памяти.Или лучше отсортировать значения каким-либо образом ДО передачи KEY + Interable редуктору.

...