Change Dir

          先知cd——熱愛生活是一切藝術的開始

          統計

          留言簿(18)

          積分與排名

          “牛”們的博客

          各個公司技術

          我的鏈接

          淘寶技術

          閱讀排行榜

          評論排行榜

          Hive配置項的含義詳解(2)

          標記粗體的我個人認為在運行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和動態分區;

          posted on 2013-08-15 14:47 changedi 閱讀(3650) 評論(0)  編輯  收藏 所屬分類: 數據

          主站蜘蛛池模板: 凤山市| 嘉禾县| 英山县| 西平县| 波密县| 内丘县| 介休市| 铁力市| 恩平市| 临泽县| 长治县| 合阳县| 古交市| 沙田区| 资兴市| 霍林郭勒市| 罗山县| 麦盖提县| 永福县| 巴林左旗| 合川市| 罗城| 本溪市| 黄冈市| 巴楚县| 额济纳旗| 松滋市| 汉中市| 华坪县| 镇安县| 冕宁县| 黄平县| 八宿县| 楚雄市| 遵义市| 洛宁县| 安国市| 万州区| 牙克石市| 宜兰县| 京山县|