2015-10-29 2 views
0

Я хочу использовать объединитель в моем MR-коде, скажем WordCount.Комбинатор Внедрение и внутренняя работа

Как его реализовать?

Какие данные передаются редуктору из объединителя?

Будет здорово, если кто-то из вас может предоставить мне коды как Combiner так и Reducer.

Это будет лучше, если вы можете объяснить, как объединитель работает

Я новичок в MapReduce, и я нахожусь на стадии обучения.

Заранее спасибо :)

ответ

0

A Комбинированный, также известный как полуредуктор.

Основная функция Комбинатор - суммировать записи выхода карты с помощью того же ключа.

Объединителя класса используется между классом карт и классом Reduce, чтобы уменьшить объем передачи данных между Картой и Уменьшить

Объяснения с примерами кодом.

МАР Входной сигнал:

What do you mean by Object 
What do you know about Java 
What is Java Virtual Machine 
How Java enabled High Performance 

КАРТА Выход

<What,1> <do,1> <you,1> <mean,1> <by,1> <Object,1> 
<What,1> <do,1> <you,1> <know,1> <about,1> <Java,1> 
<What,1> <is,1> <Java,1> <Virtual,1> <Machine,1> 
<How,1> <Java,1> <enabled,1> <High,1> <Performance,1> 

Этот выход МАР будет принят в качестве входных данных в объединитель.

Выходной сумматор Выход

<What,1,1,1> <do,1,1> <you,1,1> <mean,1> <by,1> <Object,1> 
    <know,1> <about,1> <Java,1,1,1> 
    <is,1> <Virtual,1> <Machine,1> 
    <How,1> <enabled,1> <High,1> <Performance,1> 

Этот сумматор передается в качестве входных данных для редуктора.

Редуктор Выходной

<What,3> <do,2> <you,2> <mean,1> <by,1> <Object,1> 
    <know,1> <about,1> <Java,3> 
    <is,1> <Virtual,1> <Machine,1> 
    How,1> <enabled,1> <High,1> <Performance,1> 

Если вы используете Java, ниже код будет установлен объединитель & Reducer к тому же классу, что является идеальным.

job.setJarByClass(WordCount.class); 
    job.setMapperClass(TokenizerMapper.class); 
    job.setCombinerClass(IntSumReducer.class); 
    job.setReducerClass(IntSumReducer.class); 

Посмотрите работать example в Java @tutorialspoint

1

Combiner используется между преобразовател и редуктором, чтобы уменьшить объем передачи данных между картой и уменьшить фазу.

Combiner реализация аналогична реализации редуктора. Он должен реализовать метод уменьшения интерфейса интерфейса. Пары значений ввода и вывода должны быть аналогичны парам редуктора.

В нашем драйвере мы можем только отметить наш класс редуктора, объединитель

job.setCombinerClass(MyReducer.class) 

Combiners может быть использован только на функции, которые являются коммутативными и ассоциативными.

For example maximum of numbers 

Map 1 output - (23,27, 31) -> Combiner -> 31 
Map 2 output - (22,36,33,45) -> Combiner -> 45 
Map 3 output - (41,33,15,16) -> Combiner -> 41 

Combiner acts on each of the mapper's output. 

Combiner output - (31,45,41) ->Reducer -> 45 

Сумма передачи данных теперь уменьшена, что видно из примера.

1

объединитель делает ту же работу, как редуктор, он может реализовать интерфейс редуктор и более ездить это уменьшить method.if вы используете комбинатор, меньше достаточно для пропускной способности сети, чтобы передать промежуточное (o/p картографа) в редуктор.

Вы можете использовать тот же метод сокращения (принадлежащий вашему собственному редуктору) в методе сокращения объединителя, если ваше приложение, используемое в редукторе, подчиняется как коммутативным, так и ассоциативным.

не существует правила для выполнения комбайнера, даже если вы пишете объединитель для вашего приложения MR (map reduce). Для выполнения объединителя, конечно, количество разливов должно быть как минимум 3.

для ex мой выходной сигнал картера есть ,,,,, < 34>. без комбайнера, мой вход для редуктора есть. с объединителем, я могу передать вход для редуктора, как,.

+0

Вы, кажется, оставили часть ответа. это? –

Смежные вопросы