關於HIVE優化的四種方法總結

2021-09-30 14:39:59 字數 2216 閱讀 4890

一、整體架構優化

現在hive的整體框架如下,計算引擎不僅僅支援map/reduce,並且還支援tez、spark等。根據不同的計算引擎又可以使用不同的資源排程和儲存系統。

整體架構優化點:

1、根據不同業務需求進行日期分割槽,並執行型別動態分割槽。

0.14中預設hive.exec.dynamic.partition=ture

2、為了減少磁碟儲存空間以及i/o次數,對資料進行壓縮

job輸出檔案按照block以gzip方式進行壓縮。

純文字檢視

複製**

12

3

mapreduce.output.fileoutputformat.compress=true

mapreduce.output.fileoutputformat.compress.type=block

mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.gzipcodec

map輸出結果也以gzip進行壓縮。

純文字檢視

複製**

12

mapreduce.map.output.compress=true

mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.gzipcodec

對hive輸出結果和中間結果進行壓縮。

純文字檢視

複製**

12

hive.exec.compress.output=true

hive.exec.compress.intermediate=true

3、hive中間表以sequencefile儲存,可以節約序列化和反序列化的時間

hive.query.result.fileformat=sequencefile

4、yarn優化,在此不再展開,後面專門介紹。

二、mr階段優化

hive操作符有:

執行流程為:

reduce切割演算法:

hive.exec.reducers.max=999

hive.exec.reducers.bytes.per.reducer=1g 

reduce task num=min,可以根據實際需求來調整reduce的個數。

三、job優化

1、本地執行

預設關閉了本地執行模式,小資料可以使用本地執行模式,加快執行速度。

hive.exec.mode.local.auto=true 

預設本地執行的條件是,hive.exec.mode.local.auto.inputbytes.max=128mb, hive.exec.mode.local.auto.tasks.max=4,reduce task最多1個。 效能測試:

資料量(萬)     操作     正常執行時間(秒)     本地執行時間(秒)

170     group by     36     16

80     count     34     6

2、mapjoin

預設mapjoin是開啟的, hive.auto.convert.join.noconditionaltask.size=10mb

裝載到記憶體的表必須是通過scan的表(不包括group by等操作),如果join的兩個表都滿足上面的條件,/mapjoin/指定**不起作用,只會裝載小表到記憶體,否則就會選那個滿足條件的scan表。

四、sql優化

整體的優化策略如下:

關於清除浮動的四種方法

浮動對頁面的影響 如果乙個父盒子中有乙個子盒子,並且父盒子沒有設定高,子盒子在父盒子中進行了浮動,那麼將來父盒子的高度為0.由於父盒子的高度為0,下面的元素會自動補位,所以這個時候要進行浮動的清除。關於清除浮動的方式 方式一 使用overflow屬性來清除浮動 ovh 先找到浮動盒子的父元素,再在父...

關於清除浮動的四種方法

浮動對頁面的影響 如果乙個父盒子中有乙個子盒子,並且父盒子沒有設定高,子盒子在父盒子中進行了浮動,那麼將來父盒子的高度為0.由於父盒子的高度為0,下面的元素會自動補位,所以這個時候要進行浮動的清除。關於清除浮動的方式 方式一 使用 overflow 屬性來清除浮動 ovh 先找到浮動盒子的父元素,再...

關於清除浮動的四種方法

浮動對頁面的影響 如果乙個父盒子中有乙個子盒子,並且父盒子沒有設定高,子盒子在父盒子中進行了浮動,那麼將來父盒子的高度為0.由於父盒子的高度為0,下面的元素會自動補位,所以這個時候要進行浮動的清除。關於清除浮動的方式 方式一 使用overflow屬性來清除浮動 ovh overflow hidden...