Hadoop: несколько излучений из одной функции карты - PullRequest
1 голос
/ 16 октября 2011

Я пишу небольшую программу Hadoop на Java, мое требование состоит в том, чтобы сделать два Emits из одного метода Map и обработать оба Emits в одном методе Reduce. Это возможно ? Если возможно, как мне провести различие между двумя Emits, чтобы я мог обрабатывать их по-разному в моем методе Reduce? Я сделал много поисков по этому вопросу, но не смог получить ничего конкретного. Мне не разрешено использовать какие-либо внешние библиотеки.

Ответы [ 3 ]

1 голос
/ 17 октября 2011

Вы можете вывести как можно меньше или столько записей за один вызов "Map".

Когда вам нужно обработать несколько таких записей одним вызовом «Reduce», вы просто убедитесь, что они имеют один и тот же ключ, а среда Hadoop обеспечит их подачу в один и тот же вызов редуктора.

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

1 голос
/ 16 октября 2011

Карта / уменьшение задач принимает ключ / значение в качестве ввода. Значение не обязательно должно быть строкой, как в большинстве примеров, таких как WordCount, оно также может быть сложной структурой.

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

0 голосов
/ 09 июля 2014

Если вы хотите отличить различные выбросы от карты на стороне редуктора, вы можете
1) сохранить одинаковые ключи для всех выбросов, значения тегов
2) теги-ключи для различных выбросов, значения тегов (это полезно, еслиВы хотите сгруппировать / упорядочить некоторую часть ключа на стороне редуктора) для этого прочитайте следующее: Какая польза от компаратора группировки в карте hadoop lower http://www.bigdataspeak.com/2013/02/hadoop-how-to-do-secondary-sort-on_25.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...