【发布时间】:2011-11-21 16:49:16
【问题描述】:
当我在猪中使用 COGROUP 而不是 JOIN 时,是否有任何优势(性能/地图数量减少)?
http://developer.yahoo.com/hadoop/tutorial/module6.html 谈论他们产生的输出类型的差异。但是,忽略“输出模式”,性能是否有显着差异?
【问题讨论】:
标签: hadoop apache-pig
当我在猪中使用 COGROUP 而不是 JOIN 时,是否有任何优势(性能/地图数量减少)?
http://developer.yahoo.com/hadoop/tutorial/module6.html 谈论他们产生的输出类型的差异。但是,忽略“输出模式”,性能是否有显着差异?
【问题讨论】:
标签: hadoop apache-pig
没有重大的性能差异。我这么说的原因是它们最终都是一个 MapReduce 作业,将相同的数据转发给减速器。两者都需要将所有记录向前发送,其中键是外键。如果有的话,COGROUP 可能会更快一些,因为它不会对匹配项进行笛卡尔积并将它们保存在单独的包中。
如果您的数据集很小,您可以使用名为"replicated join" 的连接选项。这将在所有地图任务中分配第二个数据集并将其加载到主内存中。这样,它可以在映射器中完成整个连接,而不需要减速器。根据我的经验,这是非常值得的,因为 join 和 cogroups 的瓶颈是将整个数据集改组到 reducer。据我所知,COGROUP 无法做到这一点。
【讨论】: