hive mapjoin 方案
hive 顯示使用mapjoin
hive> set hive.auto.convert.join=true;
hive> set hive.auto.convert.join;
hive.auto.convert.join=true
hive> SELECT
-- 可以顯示的指定如下這一行mapjoin 關鍵詞。
/*+mapjoin(b)*/
a.date,a.page_id,b.page_name,
count(1) as pv,
count(distinct gu_id) as uv
from dw.fct_page_ref a
left join dw.dim_page b on a.page_id = b.page_id
where date = "2017-09-20"
group by a.date,a.page_id,b.page_name;
執行日志:
Query ID = gongzi_20170922102424_c2e3e956-1c3f-41de-86b6-8531b57a23ab
Total jobs = 1
Execution log at: /tmp/gongzi/gongzi_20170922102424_c2e3e956-1c3f-41de-86b6-8531b57a23ab.log
2017-09-22 10:25:01 Starting to launch local task to process map join; maximum memory = 1908932608
....
...
MapJoin 使用限制
MapJoin 使用限制,必須是join中從表(子查詢)數據比較小。所謂從表,及左外連接的右表,或者右外連接的左表。