Hive 常用優化方法

2021-08-21 19:48:34 字數 1163 閱讀 2973

join連線時的優化:當三個或多個以上的表進行join操作時,如果每個on使用相同的字段連線時只會產生乙個mapreduce。

join連線時的優化:當多個表進行查詢時,從左到右表的大小順序應該是從小到大。原因:hive在對每行記錄操作時會把其他表先快取起來,直到掃瞄最後的表進行計算。

在where字句中增加分割槽過濾器。

當可以使用left semi join 語法時不要使用inner join,前者效率更高。原因:對於左表中指定的一條記錄,一旦在右表中找到立即停止掃瞄。

如果所有表中有一張表足夠小,則可置於記憶體中,這樣在和其他表進行連線的時候就能完成匹配,省略掉reduce過程。設定屬性即可實現,set hive.auto.covert.join=true; 使用者可以配置希望被優化的小表的大小 set hive.mapjoin.smalltable.size=2500000; 如果需要使用這兩個配置可置入$home/.hiverc檔案中。

同一種資料的多種處理:從乙個資料來源產生的多個資料聚合,無需每次聚合都需要重新掃瞄一次。

例如:insert overwrite table student select * from employee; insert overwrite table person select * from employee;

可以優化成:from employee insert overwrite table student select * insert overwrite table person select *

limit調優:limit語句通常是執行整個語句後返回部分結果。set hive.limit.optimize.enable=true;

開啟併發執行。某個job任務中可能包含眾多的階段,其中某些階段沒有依賴關係可以併發執行,開啟併發執行後job任務可以更快的完成。設定屬性:set hive.exec.parallel=true;

hive提供的嚴格模式,禁止3種情況下的查詢模式。

a:當表為分割槽表時,where字句後沒有分割槽欄位和限制時,不允許執行。

b:當使用order by語句時,必須使用limit欄位,因為order by 只會產生乙個reduce任務。

c:限制笛卡爾積的查詢。

10.合理的設定map和reduce數量。

jvm重用。可在hadoop的mapred-site.xml中設定jvm被重用的次數。

hive 幾種hive優化方法

1.通過explain或者explain extended來檢視執行計畫。explain select from u3 執行結果 stage dependencies stage 0 is a root stage stage plans stage stage 0 fetch operator l...

Hive的常用優化設定

設定名稱 set mapred.job.name test 每個map最大輸入大小 set mapred.max.split.size 300000000 每個map最小輸入大小 set mapred.min.split.size 100000000 執行map前進行小檔案合併 set hive.i...

Hive優化的幾種方法

由於hive是使用mapreduce來執行,在只有少量資料的時候,執行效率反而不如單台機器執行效率高。通過設定set hive.exec.mode.local.auto true,但當檔案大小超過128m或者數量大於四則會換到集群模式,可以由下面兩個命令設定 hive.exec.mode.local...