在PIG加入vs COGROUP

时间:2011-09-21 07:23:59

标签: hadoop apache-pig

当我在猪中使用COGROUP而不是JOIN时,是否有任何优势(wrt性能/没有地图减少)?

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

1 个答案:

答案 0 :(得分:12)

没有重大的性能差异。我说这个的原因是它们最终都是一个MapReduce作业,它将相同的数据发送到Reducer。两者都需要向前发送所有记录,密钥是外键。如果有的话,COGROUP可能会更快一些,因为它不会在命中数据中执行笛卡尔积,并将它们保存在单独的包中。

如果您的某个数据集较小,则可以使用名为"replicated join"的连接选项。这将在所有map任务中分配第二个数据集并将其加载到主内存中。这样,它可以在映射器中完成整个连接,而不需要reducer。根据我的经验,这是非常值得的,因为连接和cogroups的瓶颈是将整个数据集拖放到reducer。据我所知,您无法使用COGROUP执行此操作。