当我在猪中使用COGROUP代替JOIN时,有什么优点(wrt性能/贴图减少)?

http://developer.yahoo.com/hadoop/tutorial/module6.html讨论它们产生的输出类型的差异。但是,忽略“输出模式”,性能是否有任何显着差异?

最佳答案

没有主要的性能差异。我之所以这样说,是因为它们最终都只是一个MapReduce作业,可以将相同的数据转发给化简器。两者都需要向前发送所有记录,且键为外键。如果有的话,COGROUP可能会更快一些,因为它不会在匹配中进行笛卡尔乘积运算,而是将它们保存在单独的包中。

如果您的数据集之一很小,则可以使用名为"replicated join"的联接选项。这将在所有 map task 中分配第二个数据集,并将其加载到主内存中。这样,它可以在映射器中完成整个联接,而无需精简器。以我的经验,这是非常值得的,因为联接和联合组的瓶颈是将整个数据集改组到化简器。据我所知,您不能使用COGROUP做到这一点。

10-06 11:13