2018-06-14更新:更新8
hive 在大資料執行時,真的是很慢,跑一張表經常就是跑幾個小時,一天下來跑不了幾張表,通過一段時間學習,總結幾個常用的hive 優化方法,希望對新手有點幫助,我也是新手,部落格存在問題的地方,請大家批評指正,共同學習、進步,謝謝!
hive -f /路徑/filename 執行打包檔案,可以在下班之後,確保**沒有問題的情況下,打包執行,第二天再來看結果,可能也會快一點
1、增加reduce數量:通過set mapred.reduce.tasks=2000;將reduce數量增加,提高執行效率,而map的資料無法變更的,需要調整map的儲存容量,這個在配置檔案裡面,一般最大容量是256m;
2、set hive.fetch.task.conversion=more 調整hive 執行方式,查sample資料時,不需要執行mapreduce,能夠加快速度,或者desc table 檢視相關字段,也是乙個辦法
3、set hive.auto.convert.join=true 優化小表、大表連線;通過這種方式,能夠將小表優先放置記憶體中,提高查詢速度,而不是在join 過程中反覆查詢大表
4、set hive.optimize.skewjoin =
true; 應對表傾斜情況,在join的過程中;
靜態設定
動態執行切換
(任務執行id)
-queue queuename
6、並行多個map,如果在map之間不存在
關聯關係的情況下,設定:set exec.parallel=true,但是同樣會消耗大量資源,請謹慎使用!或者用union all 進行合併操作
7、語句優化:能用join的就盡量join,left outer join 要少用,特別是在大、小表關聯的情況下,慎重選擇。至於去重:distinct 要少用,因為這個會導致僅僅使用乙個reduce。可以用group by去重。
8、資料傾斜也是影響mr執行速度的乙個重要原因,儘管可能設定reduce=較大數,但是還是可能存在傾斜情況,可以嘗試 set hive.groupby.skewindata=true 從而達到負載均衡的目的,加快執行速度;
以上是一些常規的優化方法,1、2、3比較常用,
4、5請謹慎使用,畢竟資源是有限的,切勿造成資源浪費,影響整個公司任務進度;
hive 優化策略
explain 解釋執行計畫 通過explain命令,可以檢視hive語句的操作情況,是否為慢查詢,是否走索引,一目了然 explain select sum from table name 動態分割槽調整 hive.exec.dynamic.partition.mode strict 預設是str...
Hive優化策略大全
hive的儲存層依託於hdfs,hive的計算層依託於mapreduce,一般hive的執行效率主要取決於sql語句的執行效率,因此,hive的優化的核心思想是mapreduce的優化。hive的sql語句在執行之前需要將sql語句轉換成mapreduce任務,因此需要了解具體的轉換過程,可以在sq...
hive整體架構優化解決策略
高階大資料架構師!hive可以從幾個方面進行優化,從系統角度看 整體架構 mr階段 job以及平台都可以進行優化。從使用者角度看 了解sql執行過程以及業務資料特點,調整sql語句進行優化。一 整體架構優化現在hive的整體框架如下,計算引擎不僅僅支援map reduce,並且還支援tez spar...