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的时间极大的缩短。
本文介绍了在Hive中使用MapJoin来优化大表与小表连接的性能。通过将小表加载到内存中,在Map阶段完成连接操作,可以显著减少处理时间和资源消耗。

4618

被折叠的 条评论
为什么被折叠?



