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