hive mapjoin

本文探讨了在特定场景下使用MapJoin提升查询效率的方法。通过将小表缓存至内存并在map阶段完成连接,避免了reduce过程,从而显著提高了处理速度。此外,还对比了MapJoin与CommonJoin的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

insert overwrite table crosstest
select  /*+MAPJOIN(a)*/ a.ra,a.dec,b.ra,b.dec
from  rosat2rc  a  join  tycho2rc  b
on (a.dec>83 and a.dec<93 and b.dec>83 and b.dec<93)
where 3.5*3.5/1200/1200>((a.ra-b.ra)*cos((a.dec+b.dec)*3.14/180/2))*((a.ra-b.ra)*cos((a.dec+b.dec)*3.14/180/2))+(a.dec-b.dec)*(a.dec-b.dec)

 

 

当要连接的两个表其中一个表非常小的时候,可以考虑使用mapjoin。mapjoin会将小表拷贝到每个运行map的节点上,并将其cache到内存 中,然后在map阶段连接大表。由于省去了reduce过程,效率会提高不少。使用mapjoin之后,join会执行两个map-reduce Job,不用mapjoin则只有一个。问了下少杰,原来hive.merge.mapfiles这个参数设置为true了。因为只有map而没有 reduce,map的数量又不好控制,可能导致大量的map任务,这样会生成许多文件。hive.merge.mapfiles为true时,会启动另 外一个map-reduce Job来合并小文件。

 

 

common join 则只有一个mapreduce任务,map扫描排序表数据,reduce进行join操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值