【hive优化】hive join优化一:大表关联小表

mac2022-06-30  22

hive join优化一:大表关联小表

两个table的join的时候,如果单纯的使用MR的话会消耗大量的内存,浪费磁盘的IO,大幅度的影响性能。

在大小表join的时候,即一个比较小的表和一个较大的表joining,如果使用mapjoin的话,就可以极大的节省时间,甚至达到只需要正常joining的一半时间。

使用mapjoin的话会把小表直接放到内存,然后在map段跟大表进行join操作,其运行过程如下: 1.运行本地的map join任务 2.然后将小表的数据写到XXX.hashtable文件 3.在给这个文件里面上传一个文件进行map join 4.之后才运行了MR代码去运行计数任务

其参数为: hive.auto.convert.join=true,启用此参数时,Hive在执行时候会自动转化为MapJoin

 

后记:

启用mapjoin后,有可能会比Common Join消耗多一些资源,这点需要注意,但其好处是运行SQL的时间极大的缩短。

 

 

最新回复(0)