Используя Hadoop, мои редукторы, как гарантируют, получат все записи с тем же ключом?

Я выполняю задание Hadoop с помощью Hive на самом деле, который, как предполагается, uniq строки во многих текстовых файлах. На уменьшать шаге это выбирает последний раз запись с меткой времени для каждого ключа.

Hadoop гарантирует, что каждая запись с тем же ключом, произведенным шагом карты, перейдет к единственному редуктору, даже если много редукторов будут натыкаться на кластер?

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

14
задан Gyan Veda 5 May 2015 в 21:33
поделиться

3 ответа

Все значения ключа отправляются в один и тот же редуктор. См. Это Yahoo! учебник для более подробного обсуждения.

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

14
ответ дан 1 December 2019 в 12:38
поделиться

Вообще-то нет! Вы можете создать Partitioner , который отправляет один и тот же ключ другому редуктору каждый раз, когда вызывается getPartition . Это просто не очень хорошая идея для большинства приложений.

5
ответ дан 1 December 2019 в 12:38
поделиться

Да, Hadoop гарантирует, что все одинаковые ключи перейдут к одному и тому же редуктору. Это достигается с помощью функции разделения, которая объединяет ключи с помощью хэш-функции.

Для получения дополнительной информации о процессе разделения взгляните на это: Разделение данных

В нем конкретно говорится о том, как разные преобразователи, обрабатывающие один и тот же ключ, гарантируют, что все ключи с заданным значением попадают в один и тот же раздел. , и поэтому обрабатываются одним и тем же редуктором.

3
ответ дан 1 December 2019 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: