目录

介绍

mapjoin的使用方法

结语


介绍

MAPJION会把小表全部加载到内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在map端是进行了join操作,省去了reduce运行的时间,算是hive中的一种优化。

如上图中的流程,首先Task A在客户端本地执行,负责扫描小表b的数据,将其转换成一个HashTable的数据结构,并写入本地的文件中,之后将该文件加载到DistributeCache中。

接下来的Task B任务是一个没有Reduce的MapReduce,启动MapTasks扫描大表a,在Map阶段,根据a的每一条记录去和DistributeCache中b表对应的HashTable关联,并直接输出结果,因为没有Reduce,所以有多少个Map Task,就有多少个结果文件。

mapjoin的使用方法

如果除一个表外,所有要连接的表都很小,则可以使用mapjoin进行关联。

SELECT /*+ MAPJOIN(b) */ a.key, a.value
FROM a JOIN b ON a.key = b.key

前提b表是一张小表,具体小表有多小,由参数hive.mapjoin.smalltable.filesize来决定,默认值是25M。开启hive.auto.convert.join=true参数时,默认值是false,满足条件的话Hive在执行时候会自动转化为MapJoin,或使用hint提示 /*+ mapjoin(table) */执行MapJoin。

参数列表:

1、小表自动选择Mapjoin
set hive.auto.convert.join=true;
默认值:false。该参数为true时,Hive自动对左边的表统计量,若是小表就加入内存,即对小表使用Map join
2、小表阀值
set hive.mapjoin.smalltable.filesize=25000000;
默认值:25M
hive.smalltable.filesize (replaced by hive.mapjoin.smalltable.filesize in Hive 0.8.1)

不支持以下内容

  • Union Followed by a MapJoin
  • Lateral View Followed by a MapJoin
  • Reduce Sink (Group By/Join/Sort By/Cluster By/Distribute By) Followed by MapJoin
  • MapJoin Followed by Union
  • MapJoin Followed by Join
  • MapJoin Followed by MapJoin

结语

本次的分享就到这里了,下一篇博客博主将带来hive分析函数的使用方法,敬请期待!受益的朋友或对大数据技术感兴趣的伙伴记得点赞关注支持一波!

hive之Map Join使用方法相关推荐

  1. 关于hive中Map join 时大表left join小表的问题

    在hive中,(启用Map join时) 大表left join小表,加载从右向左,所以小表会加载进内存,存储成map键值对,通过大表驱动小表,来进行join,即大表中的join字段作为key 来获取 ...

  2. Hive的Map Join与Common Join

    笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join). 一.Hive Common Join 如果不指定MapJoin ...

  3. Hive中的map join、left semi join和sort merge bucket join

    map join map join是将join双方比较小的表直接分发到各个 map进程的内存中,在map进程中进行join操作,这样就不用进行reduce步骤,从而提高了速度. 如果不指定mapjoi ...

  4. Wed APIS-Window对象、本地存储、数组的map()方法、数组的join()方法

    目录 Window对象 1.BOM(浏览器对象模型) 2.定时器-延时函数 3.JS执行机制 4.location对象 5.navigator对象 6.histroy对象 本地存储 1.分类 1.1. ...

  5. MR实现reduce join和map join及hive的执行计划

    一.涵盖 MapReduce InputFormat RecordReader 切片:block=input split 1.1 File- Text- NLine- DB- Mapper setup ...

  6. Hive优化的十大方法

    Hive用的好,才能从数据中挖掘出更多的信息来.用过hive的朋友,我想或多或少都有类似的经历:一天下来,没跑几次hive,就到下班时间了.Hive在极大数据或者数据不平衡等情况下,表现往往一般,因此 ...

  7. Map Join介绍及案例

    Map Join介绍及案例 Map Join介绍 1. 使用场景 2. 优点 3. 实现方法 Map Join案例 1. 需求 (1)需求说明 (2)文件 2.案例分析 (1)需求分析 (2)输入数据 ...

  8. Hive的连接(join)方案

    一 Common JOIN/Reduce Side JOIN/Shuffle JOIN 这三种其实都是一种连接方案:即在Reduce端做JOIN操作.一般情况下,如果不手动指定MapJoin或者不满足 ...

  9. MapReduce之Map join操作

    MapReduce之Map join操作(分布式缓存) 文章目录 MapReduce之Map join操作(分布式缓存) 案例结合 利用MapReduce中的setup方法与DistributedCa ...

最新文章

  1. Pairs Forming LCM LightOJ - 1236
  2. Python报错TypeError: 'str' object is not callable
  3. shell 获取ora报错信息_频发:故障排除之又见 ORA-4031丨云和恩墨技术通讯
  4. what should you do if you want to have a high efficiency for communication
  5. beego1---beego,bee环境配置
  6. Linux 技巧: Bash 测试和比较函数
  7. Django的分页器(paginator)
  8. Windows10安装ubuntu 20双系统
  9. js接收springmvc传过来的数据_Java修行第072天 ---SpringMVC(中)
  10. 1088 三人行 (20分)
  11. python json dumps 自定义_Python json.dumps()用法及代码示例
  12. 外星人进化_外星人真的比人类强大吗?科学家给出几种猜想,你认同吗?
  13. 11. Django基础:应用及分布式路由
  14. EasyCVR接入Ehome协议设备PS流解析失败?一文分析PS流解析注意点
  15. SM3算法的编程实现
  16. linux免杀工具,安卓Apk免杀工具:backdoor-apk 教程
  17. python _滑动时间窗
  18. 一个疫情期间的实习生经历
  19. 推荐一个数据可视化大屏幕报表开源系统
  20. python爬取拉勾网职位信息_python——拉勾网信息爬取

热门文章

  1. android studio没有提示错误,Android Studio错误代码不提示问题解决
  2. 重定向次数过多怎么解决(www.bing.com 重定向次数过多)
  3. web项目的实时监控-思路
  4. ps蒙版使用计算机一级,全国计算机一级Photoshop基础训练
  5. NLP自然语言处理系列- week7- 检索模型(精排)(8)
  6. 《ChineseBERT: Chinese Pretraining Enhanced by Glyph and Pinyin Information》阅读记录
  7. 传奇SF上传列表格式
  8. 双十一值得买的充电宝推荐,平价耐用的充电宝排行
  9. Linux下常用数据库介绍
  10. JavaScript字符串替换