Изучение Mapreduce: учитывается ли редуктор или картограф - PullRequest
0 голосов
/ 16 июня 2020

В задании mapreduce, состоящем из select count(*) from products where id = 2, где выполняется операция count(*), в картографе или редукторе?

1 Ответ

1 голос
/ 16 июня 2020

Это может быть агрегирование как сопоставителя, так и редуктора или только редуктора.

При включенной агрегации на стороне карты:

 hive.map.aggr=true;

данные будут предварительно агрегированы (в рамках обработки разделения ) на каждом картографе с помощью таблицы Ha sh. Редуктор выполнит окончательную агрегацию частичных результатов, полученных от сопоставителя.

Сопоставители выведут пары (#{token}, #{token_count}). Фреймворк Had oop снова сортирует эти пары, и редукторы суммируют значения для получения общего количества для каждого токена. В этом случае каждый сопоставитель будет выводить одну строку для каждого токена каждый раз, когда карта очищается, вместо одной строки для каждого вхождения каждого токена. Компромисс заключается в том, что им необходимо хранить карту всех токенов в памяти.

Если агрегирование на стороне карты отключено: hive.map.aggr=false, сопоставитель отфильтрует строки и отправит их редуктору, редуктор сделает агрегация, это может вызвать высокий сетевой ввод-вывод.

Подробнее о Агрегация на стороне карты в Hive. См. Также связанные { ссылка }

...