Hive優化的幾種方法

2021-10-07 06:03:02 字數 1185 閱讀 6744

由於hive是使用mapreduce來執行,在只有少量資料的時候,執行效率反而不如單台機器執行效率高。

通過設定set hive.exec.mode.local.auto=true,但當檔案大小超過128m或者數量大於四則會換到集群模式,可以由下面兩個命令設定

hive.exec.mode.local.auto.inputbytes.max=134217728(128m)

hive.exec.mode.local.auto.input.files.max=4

做join操作時小表放左邊,大表放右邊,但最新版本hive已經做優化,順序影響不大了。

開啟mapjoin的話,會自動判斷是否是小表,是小表就將小表加入記憶體。

set hive.auto.convert.join =

true

;#通過下面這個引數判斷是否滿足小表,預設25m

hive.mapjoin.smalltable.filesize

在reduce階段,相同key值資料過多,集中到乙個reduce上,而其他reduce則空閒,即導致了資料傾斜。

可以在map端進行聚合,或者用兩個mr任務實現負載均衡。

第乙個mr將map的結果隨機輸出到reduce,相同key值也會在不同的reduce上,完成聚合,就達到負載均衡的效果,第二個再把第乙個mr的結果中相同的key值分布到乙個reduce上,就ok了。

#開啟map端的聚合

set hive.map.aggr=true;

#資料傾斜時進行負載均衡

hive.groupby.skewindata

往hive裡插入資料時,要讓其實現自動進入相應的分割槽,需要做以下設定。

set hive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nonstrict;

小檔案過多時開這個set mapred.job.reuse.jvm.num.tasks=n;n為task個數

平行計算開這個set hive.exec.parallel=true;用這個控制job數hive.exec.parallel.thread.number

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...

sql優化的幾種方法

1.盡量不要使用 select from t 用具體的字段列表代替 不要返回用不到的任何字段。2.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。3.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行...

SQL優化的幾種方法

1 盡量避免使用select 返回無用的字段會降低查詢效率。如下 select from test 優化方式 使用具體的字段代替 只返回使用到的字段。2 對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。3 盡量避免進行null值的判斷,會導致資...