当我在猪中使用COGROUP代替JOIN时,是否有任何优势(wrt性能/没有地图减少)?
http://developer.yahoo.com/hadoop/tutorial/module6.html 谈论他们产生的产出类型的差异。但是,忽略“输出模式”,性能是否存在显着差异?
当我在猪中使用COGROUP代替JOIN时,是否有任何优势(wrt性能/没有地图减少)?
http://developer.yahoo.com/hadoop/tutorial/module6.html 谈论他们产生的产出类型的差异。但是,忽略“输出模式”,性能是否存在显着差异?
没有重大的性能差异。我说这个的原因是它们最终都是一个MapReduce作业,它将相同的数据发送到Reducer。两者都需要向前发送所有记录,密钥是外键。如果有的话 COGROUP
可能会快一点,因为它不会在击中时使用笛卡尔积,并将它们保存在单独的袋中。
如果您的某个数据集较小,则可以使用名为的连接选项 “复制加入”。这将在所有map任务中分配第二个数据集并将其加载到主内存中。这样,它可以在映射器中完成整个连接,而不需要reducer。根据我的经验,这是非常值得的,因为连接和组合的瓶颈是将整个数据集拖放到reducer。你不能这样做 COGROUP
, 据我所知。
没有重大的性能差异。我说这个的原因是它们最终都是一个MapReduce作业,它将相同的数据发送到Reducer。两者都需要向前发送所有记录,密钥是外键。如果有的话 COGROUP
可能会快一点,因为它不会在击中时使用笛卡尔积,并将它们保存在单独的袋中。
如果您的某个数据集较小,则可以使用名为的连接选项 “复制加入”。这将在所有map任务中分配第二个数据集并将其加载到主内存中。这样,它可以在映射器中完成整个连接,而不需要reducer。根据我的经验,这是非常值得的,因为连接和组合的瓶颈是将整个数据集拖放到reducer。你不能这样做 COGROUP
, 据我所知。