hive 在map端进行连接的过程叫map-side join,应为hive可以和内存中的小表进行逐一匹配,进而可以省略掉常规操作的reduce过程。
hive 启动map-side join 需要把参数hive.auto.convert.join 参数设置为ture
hive> set hive.auto.convert.join;
hive.auto.convert.join=true
Time taken: 81.278 seconds, Fetched: 345 row(s)
设置 set hive.auto.convert.join=false 执行相同的HQL,发现没有启用map-side join:
Time taken: 113.87 seconds, Fetched: 345 row(s)
hive> select /*+MAPJOIN(sp)*/ sp.provinceid,sp.provincename,sc.cityid,sc.cityname from s_province sp join s_city sc on sp.provinceid = sc.provinceid;