Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1457256
  • 博文数量: 209
  • 博客积分: 464
  • 博客等级: 下士
  • 技术积分: 3772
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-24 18:25
个人简介

阿弥陀佛

文章分类

全部博文(209)

文章存档

2019年(3)

2018年(5)

2017年(6)

2016年(10)

2015年(9)

2014年(73)

2013年(90)

2012年(13)

分类: 架构设计与优化

2014-11-10 11:31:42

      常见的离线计算的Join模式分为Reduce Join 和Map Join。MapJoin 处理的表 ,比如一个表比较大(L),一个表比较小(R)。
     例如根据用户id,对下图的两个表进行合并操作。当这两个表要按照外键key,进行Join操作的时候,系统该如何做呢?
     该方法有一个前提条件,就是R 必须能够Load进内存中。将R放入到(以外键作为key)的哈希表中。然后遍历L,将L中的每个元素都插入到哈希表中,如果哈希表中没有,则不插入,有的话就插入到哈希表中。这样就减少了shuffle网络传输过程和Reduce中的排序过程。
      在设计Hive 或者其他的基于Mapreduce模型的SQL的时候,Join方式的不同将大大的影响系统的性能。
阅读(4930) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

shenyanxxxy2014-11-11 10:51:34

这个图是摘自大数据日知录,这本书超级好看

shenyanxxxy2014-11-11 10:48:42

图11-9为一个大表和一个小表,Map Join之后形成图11-10。