MapJoin

文章介绍了Hive中的MapJoin优化技术,包括自动开启mapjoin的配置hive.auto.convert.join以及控制小表大小的hive.mapjoin.smalltable.filesize属性。当小表数据量小于25MB时,会被加载到内存中。MapReduce任务通过DistributedCache将小表的HashTable文件分发到各个Mapper,实现Map阶段的Join操作,减少Reduce步骤。此外,sethive.ignore.mapjoin.hint参数用于控制是否忽略MapJoin的注释提示。
摘要由CSDN通过智能技术生成

1. 两个属性来设置该优化的触发时机:

1.hive.auto.convert.join=true (default :true),自动开启mapjoin优化

2.hive.mapjoin.smalltable.filesize 默认值为2500000(25M),通过配置该

属性来确定使用该优化的表的大小,如果表的大小小于此值就会被加载进内存中

a. 通过MapReduce Local Task,将小表读入内存,生成HashTableFiles上传至Distributed Cache中

b.每个Mapper从Distributed Cache读取HashTableFiles到内存中,在Map阶段直接进行Join,此时的map数由大表的数据量决定

2. set hive.ignore.mapjoin.hint=true (default :true),为true时注释方式不生效,为false 时注释方式生效,强行指定需要加入内存走mapjoin的表。

set hive.ignore.mapjoin.hint=true;
 
select /*+ mapjoin(table2) */ * 
from table1
inner join table2 --小表,size 5M
on 1=1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值