千鋒教育-做有情懷、有良心、有品質的職業教育機構
MapJoin 會生成兩個Task, 首先啟動一個任務掃描小表,生成HashTable數據結構文件,然后加載進分布式緩存 DistributeCache 中,第二個 Task 會掃描大表,然后根據大表中每一條數據中的關聯字段去和DistributeCache 中的小表對應的 HashTable 做關聯,并直接輸出結果,因為沒有 Reduce 階段,所以輸出的文件個數和 Mapper 的個數一致。
-- Hive 0.11 前必須使用MAPJOIN標識顯示啟動該優化操作,列子如下
SELECT /*+ MAPJOIN(smalltable)*/ .key,value
FROM smalltable JOIN bigtable ON smalltable.key = bigtable.key
-- Hive 0.11 后,Hive默認啟動優化,兩個參數
hive.auto.convert.join = true -- 默認為true,表示默認開啟mapjoin
hive.mapjoin.smalltable.filesize=25M -- 默認25M,也就是如果表的大小小于此值就會被加載進內存中。
上一篇
Hive窗口函數相關推薦