Присоединиться к COGROUP в PIG

Есть ли какие-либо преимущества (сокращение/отсутствие карты уменьшается), когда я использую COGROUP вместо JOIN в свинье?

http://developer.yahoo.com/hadoop/tutorial/module6.html рассказывает о различии в типе выпускаемой продукции. Но, игнорируя "схему вывода", есть ли существенная разница в производительности?

Ответ 1

Нет существенных различий в производительности. Причина, по которой я говорю это, заключается в том, что они оба являются единственным заданием MapReduce, которое отправляет те же данные вперед редукторам. Оба должны отправить все записи вперед, при этом ключ является внешним ключом. Если вообще, COGROUP может быть немного быстрее, потому что он не делает декартовой продукт через хиты и удерживает их в отдельных пакетах.

Если один из ваших наборов данных невелик, вы можете использовать параметр объединения "replicated join" . Это распределит второй набор данных по всем задачам карты и загрузит их в основную память. Таким образом, он может делать все соединение в картографе и не нуждается в редукторе. По моему опыту, это очень важно, потому что узким местом в соединениях и cogroups является перетасовка всего набора данных в редуктор. Насколько мне известно, вы не можете сделать это с помощью COGROUP.