Помещение комбинера для использования в mapreduce вторичной сортировке
Я реализовал вторичную сортировку для моего приложения.
File-1 File-2 File-3
------ ------ ------
name,pos,r,value name,pos,r,value name,pos,r,value
aa,1,0,123 aa,2,1,1 aa,3,1,11
bb,1,0,234 aa,2,2,34 aa,3,2,12
aa,2,3,55 aa,3,3,13
bb,2,1,99 bb,3,1,15
bb,2,2,54 bb,3,2,19
bb,2,3,32 bb,3,3,13
Для каждой записи в Файле-1 будут доступны три записи в Файле2 и Файле3 каждая.
составной ключ::name + (pos+r)
естественный ключ:: имя
Порядок сортировки основан на составном ключе. Восходящий порядок, основанный на (pos + r)
Ожидаемый результат
Содержимое файла File1 конкретного имени (aa), за которым следует все содержимое файла file2 (три строки aa упорядочены на основе pos + r), а затем следует содержимое файла три (три строки aa упорядочены на основе pos+)
аа,123,1,34,55,11,12,13
бб,234,99,54,32,15,19,13
Я реализовал это во вторичной сортировке, используя setGroupingComparatorClass, setSortComparatorClass и пользовательский разделитель.
Мои сомнения:
1) Как добавить комбайнер для этого сценария.
- Насколько я понимаю, группировка и сортировка происходит в фазе редуктора, как только все выходные данные карты (которые разделены на основе естественного ключа) передаются для сокращения машины.
2) Если добавлен объединитель, как и когда произойдет сортировка, чтобы функция сокращения получала выходные данные от всех преобразователей в правильном порядке.
- Будут ли отсортированы выходные данные карты дважды: один раз в объединителе, который выполняется после каждой карты, и снова на стороне редуктора для сортировки всех выходных данных объединителя?
1 ответ
Предлагаем вам пройти через http://bytepadding.com/big-data/map-reduce/understanding-map-reduce-the-missing-guide/
- Сортировка происходит по картографу.
- Слияние (сортировка и слияние) происходит по редуктору.
- Combiner это дополнительный слой, где вы пытаетесь уменьшить на Mapper.
- Редуктор всегда получает все заданные значения для данного ключа.
- Mapper отправляет значения данного ключа в отсортированном виде.
Пожалуйста, ознакомьтесь с групповым компаратором и сортировочным компаратором и используйте его соответствующим образом.