Hive配置項的含義詳解

2021-06-21 00:55:53 字數 2368 閱讀 2038

認為在執行hive sql時可以根據資料情況進行設定,當然還有一些join的優化的配置需要單獨研究。

mapred.reduce.tasks:每個作業的reduce任務數,預設是hadoop client的配置1個;

hive.exec.reducers.bytes.per.reducer:每個reducer的大小,預設是1g,輸入檔案如果是10g,那麼就會起10個reducer;

hive.exec.reducers.max:reducer的最大個數,如果在mapred.reduce.tasks設定為負值,那麼hive將取該值作為reducers的最大可能值。當然還要依賴(輸入檔案大小/hive.exec.reducers.bytes.per.reducer)所得出的大小,取其小值作為reducer的個數,hive預設是999;

hive.fileformat.check:載入資料檔案時是否校驗檔案格式,預設是true;

hive.groupby.skewindata:group by操作是否允許資料傾斜,預設是false,當設定為true時,執行計畫會生成兩個map/reduce作業,第乙個mr中會將map的結果隨機分布到reduce中,達到負載均衡的目的來解決資料傾斜,可以參看阿里巴巴資料平台的這篇文章了解hive對於資料傾斜時group by的處理;

hive.groupby.mapaggr.checkinterval:map端做聚合時,group by 的key所允許的資料行數,超過該值則進行分拆,預設是100000;

hive.mapred.local.mem:本地模式時,map/reduce的記憶體使用量,預設是0,就是無限制;

hive.mapjoin.followby.map.aggr.hash.percentmemory:map端聚合時hash表的記憶體佔比,該設定約束group by在map join後進行,否則使用hive.map.aggr.hash.percentmemory來確認記憶體佔比,預設值0.3;

hive.map.aggr.hash.force.flush.memeory.threshold:map端聚合時hash表的最大可用記憶體,如果超過該值則進行flush資料,預設是0.9;

hive.map.aggr.hash.min.reduction:如果hash表的容量與輸入行數之比超過這個數,那麼map端的hash聚合將被關閉,預設是0.5,設定為1可以保證hash聚合永不被關閉;

hive.optimize.groupby:在做分割槽和表查詢時是否做分桶group by,預設開啟true;

hive.multigroupby.singlemr:將多個group by產出為乙個單一map/reduce任務計畫,當然約束前提是group by有相同的key,預設是false;

hive.optimize.cp:列裁剪,預設開啟true,在做查詢時只讀取用到的列,這個是個有用的優化;

hive.optimize.index.filter:自動使用索引,預設不開啟false;

hive.optimize.index.groupby:是否使用聚集索引優化group-by查詢,預設關閉false;

hive.optimize.ppd:是否支援謂詞下推,預設開啟;所謂謂詞下推,將外層查詢塊的 where 子句中的謂詞移入所包含的較低層查詢塊(例如檢視),從而能夠提早進行資料過濾以及有可能更好地利用索引。這篇中文文章簡單的說明了在關聯式資料庫裡的應用;

hive.optimize.ppd.storage:謂詞下推開啟時,謂詞是否下推到儲存handler,預設開啟,在謂詞下推關閉時不起作用;

hive.ppd.recognizetransivity:在等值join條件下是否產地重複的謂詞過濾器,預設開啟;

hive.join.cache.size:在做表join時快取在記憶體中的行數,預設25000;

hive.mapjoin.bucket.cache.size:mapjoin時記憶體cache的每個key要儲存多少個value,預設100;

hive.optimize.skewjoin:是否開啟資料傾斜的join優化,預設不開啟false;

hive.skewjoin.key:判斷資料傾斜的閾值,如果在join中發現同樣的key超過該值則認為是該key是傾斜的join key,預設是100000;

hive.skewjoin.mapjoin.map.tasks:在資料傾斜join時map join的map數控制,預設是10000;

hive.skewjoin.mapjoin.min.split:資料傾斜join時map join的map任務的最小split大小,預設是33554432,該引數要結合上面的引數共同使用來進行細粒度的控制;

hive.mapred.mode:hive操作執行時的模式,預設是nonstrict非嚴格模式,如果是strict模式,很多有風險的查詢會被禁止執行,比如笛卡爾積的join和動態分割槽;

hive配置詳解

hive中有許多配置將幫助我們提公升效能,其詳細配置如下 hive.auto.convert.join 預設值為true 是否根據輸入小表的大小,自動將 reduce 端的 common join 轉化為 map join,從而加快大表關聯小表的 join 速度。2 hive.groupby.ske...

hive配置詳解

hive中有許多配置將幫助我們提公升效能,其詳細配置如下 hive.auto.convert.join 預設值為true 是否根據輸入小表的大小,自動將 reduce 端的 common join 轉化為 map join,從而加快大表關聯小表的 join 速度。2 hive.groupby.ske...

Hive常用的屬性配置項

tips cdh版本的hive沒有hive default.xml等沒有default檔案 1 hive資料倉儲位置配置 官網的解釋 hive.metastore.warehouse.dir default value user hive warehouse added in hive 0.2.0 ...