MapJoin

如果不指定 MapJoin 或者不符合 MapJoin 的条件,那么Hive解析器会将 Join 操作转换成 Common Join,即:在 Reduce 阶段完成 join。容易发生数据倾斜。可以用 MapJoin 把小表全部加载到内存在 map 端进行 join ,避免 reducer 处理。


一,开启MapJoin参数设置

(1)设置自动选择Mapjoin(默认为true)


set hive.auto.convert.join = true;


(2)大表小表的阈值设置(默认25M以下认为是小表):


set hive.mapjoin.smalltable.filesize=25000000;


二,MapJoin工作机制

Hive 查看mapjoin日志过程_参数设置


在日志中,查看mapjoin日志

Hive 查看mapjoin日志过程_参数设置_02