hive 優化策略

2021-09-23 17:25:10 字數 2724 閱讀 8940

explain[解釋執行計畫]

通過explain命令,可以檢視hive語句的操作情況,是否為慢查詢,是否走索引,一目了然

explain select sum(...) from table_name;
動態分割槽調整

hive.exec.dynamic.partition.mode = strict       // 預設是strict
bucket表

索引檔案格式優化

textfile, sequencefile, rcfile[可切分], orc[增強的rcfile], 和 parquet

壓縮

set hive.exec.compress.intermediate=true        // 設定mr中間資料可以進行壓縮,預設是false

set hive.exec.compress.output=true // 設定mr輸出資料可以進行壓縮,預設是false

設定本地模式,在當台機器上處理所有任務

適用於小資料情況

hive.exec.mode.local.auto = true // 預設false

mapreduce.framework.name = local

執行本地模式的job需要滿足的條件

job的輸入總大小要小於hive.exec.mode.local.auto.inputbytes.max // 預設是134217728

map任務的數量要小於hive.exec.mode.local.auto.input.files.max // 預設是4

reduce任務的數量要是1或者是0

8. jvm重用

set mapreduce.job.jvm.numtasks=5;               // 每個jvm能執行的任務數,預設是1,即為每乙個任務開乙個jvm,如果設為-1,則沒有限制
並行執行

如果job之間沒有依賴,可以並行執行

hive.exec.parallel = true                       // 預設是false

set hive.exec.parallel.thread.number=16 // 預設是8,能夠並行執行的job數

啟動limit調優,避免全表掃瞄,使用抽樣機制

select * from ... limit 1,2

hive.limit.optimize.enable = true // 預設是false

join

動態mapjoin使用(/+ streamtable(table_name)/)

連線查詢表的大小從左到右依次增長

預設是true

set hive.auto.convert.join=true // 預設是true

set hive.mapjoin.smalltable.filesize=600000000 // 預設是25000000,mapjoin的閥值,如果小表小於該值,則會將普通join[reduce join]轉為mapjoin

可以參考mapjoin的mr實現

嚴格模式

啟用嚴格模式:

hive.mapred.mode = strict // deprecated

hive.strict.checks.large.query = true

該設定會禁用:1. 不指定分頁的orderby

2. 對分割槽表不指定分割槽進行查詢

3. 和資料量無關,只是乙個查詢模式

hive.strict.checks.type.safety = true
嚴格型別安全,該屬性不允許以下操作:1. bigint和string之間的比較

2. bigint和double之間的比較

hive.strict.checks.cartesian.product = true
hive.exec.reducers.bytes.per.reducer = 256000000    // 每個reduce任務的位元組數,256m

hive.exec.reducers.max = 1009 // reduce task的最大值,屬性為負數時,會使用該屬性

推測執行[hadoop]

讓多個map/reduce多個例項併發執行

mapreduce.map.speculative = true                    // 預設是true

mapreduce.reduce.speculative = true // 預設是true

多個分組優化

hive.multigroupby.singlereducer = true              // 預設是true

若多個groupby使用的是乙個公用的字段,則這些groupby可以生成乙個mr

虛擬列

hive.exec.rowoffset = true                          // 預設是false

Hive 實戰優化策略

2018 06 14更新 更新8 hive 在大資料執行時,真的是很慢,跑一張表經常就是跑幾個小時,一天下來跑不了幾張表,通過一段時間學習,總結幾個常用的hive 優化方法,希望對新手有點幫助,我也是新手,部落格存在問題的地方,請大家批評指正,共同學習 進步,謝謝!hive f 路徑 filenam...

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