Присоединяйтесь к COGROUP в PIG - PullRequest
       9

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

11 голосов
/ 21 сентября 2011

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

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

1 Ответ

12 голосов
/ 21 сентября 2011

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

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

...