2015-04-19 3 views
0

Изучая MapReduce, я столкнулся с this question:Карта уменьшить и хэш-секционирование

Данная программа MapReduce имеет фазовое карта генерировать 100 пар ключ-значение с 10 уникальных ключей.

Сколько можно уменьшить задачи, если эта программа может выполняться, если хотя бы одна задача «Уменьшить» не будет назначена никаким клавишам при использовании хэш-разделителя (выберите все правильные ответы)?

  • [] А. 3
  • [] Б. 11
  • [] С. 50
  • [] Д. 101

Ответы В, С, D.

Поскольку число уникальных ключей равно 10. У нас должно быть как минимум 10 задач сокращения. И хотя бы одна задача сокращения имеет нулевой ключ.

Я не могу понять, как эти ответы приходят. Пожалуйста, помогите мне в этом.

+0

Я искал источник вопроса и редактировал его на ваш вопрос вместе с объяснением. С какой частью объяснения вам нужна помощь? – Nickolay

ответ

0

Уникальные ключи с выхода карты назначаются только одной задаче уменьшения. Если есть 10 уникальных клавиш, а есть 11, 50 или 101, уменьшите задачи, тогда обязательно будут некоторые задачи сокращения, у которых нет ключей.

0

Чтобы получить один выход редуктора в виде пустого файла, т. Е. Нет ключа, назначенного для редуктора, нам нужно как минимум 11 редукторов, потому что hashpartitioner распределяется на основе хеш-функции. Подходящие редукторы для приема данных здесь part-r-00000 для part-r-00009. не

Редуктор нет = ключа хэш% п (без редукторов)

Таким образом, возможные остатки от 0 до N-1. Здесь у нас есть 10 уникальных ключей, т. Е. 10 разных остатков. У нас будут пустые файлы редукторов, даже если количество редукторов меньше уникального количества ключей. В худшем случае мы также получим один файл редуктора пустым, если количество редукторов больше, чем уникальные ключи.

0

Поскольку существует 10 уникальных ключей, нам нужны 10 редукторов, и поскольку мы хотим 1 редуктор без назначенных ключей, в общей сложности его 11 редукторов.

Если количество редукторов больше или равно 11, задание будет выполняться без исключений. Таким образом, любое число, большее или равное 11, было бы ответом.