hive中的map join

本文主要讲述一下自己在hive中使用map join遇到的一些问题。语言过于直白,请谅解

1.什么是map join?

map join主要是在关联的时候使用,hive开启map join后可以将关联的小表放入内存中去执行,以此来提高脚本的运行速度

 

2.map join如何设置?

set hive.auto.convert.join=false;
     --false表示关闭map join

set hive.auto.convert.join=true;
     --true表示开启map join

 

3.map join可能遇到的问题?

使用map join的时候,由于开启将会把小表加载入内存进行执行,所以可能会出现内存溢出的情况

报错信息可能有:

GC overhead limit exceeded

 

如果遇到内存溢出的报错,要么增加内存,要么关闭map join

 

4.map join的部分参数设置

针对内存溢出这个问题,我们可以对放入内存的表的大小进行限定

set hive.auto.convert.join=true;
set hive.mapjoin.smalltable.filesize=1048576;
--  限制内存大小为1M

但这样需要考虑的一个问题是,如果有多个小表进行关联,那么都放入内存是否会溢出呢?如果会,还是关闭map join的好

 

5.关于map join的一点小坑

map join虽然很好,但是会有如下问题:

1)map join关联多个小表时,都放入内存,则考虑内存大小需要针对上述小表大小进行累加

2)大表B表map join关联分区小表A表(200M)时,即使限制了A的分区(取10M),但依旧放入内存的大小依旧是A表的原先大小(200M)

 

言而总之,慎用map join,后续如有理解我会继续更新,谢谢~

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值