hive優化經驗

2021-10-06 11:33:07 字數 1079 閱讀 5714

hive是

資料倉儲

,主要涉及到對海量資料的

儲存和讀取

,以及資料的處理

。資料的儲存和讀取基本是基於hadoop的hdfs,所以要進行的優化就是

提高資料的傳輸

速度,可以

通過配置引數(

map和reduce階段)

,優化hive的效能(如:在map階段設定task的數量

mapred.min.split.size:

通過調整max可以起到調整map數的作用,減小max可以增加map數,增大max可以減少map數

。)。資料的處理就是hsql,hsql本質上是轉換為mapreduce來處理資料,對於效能的優化,就是一些較為複雜的hsql,實現功能並提高執行效率。(比如大

表和小表進行jion,將小表寫在前面,通過先將小表讀入記憶體中,順序掃瞄大表,

就可以在map端進行jo

in避免了shuffle)

資料傾斜問題也會影響到我們對於資料處理的時效性,所以因為一些人員開發時語句編寫不當或者一些業務問題都可能對我們產生影響;

在實際的hive sql開發的過程中,hive sql 效能的問題上實際上只有一小部分和資料傾斜有關,很多時候,hive sql執行慢是由於開發人員對於使用的資料了解不夠以及一些不良的習慣引起的。

開發人員需要確定以下幾點:

1、 需要計算的指標真的需要從資料倉儲公共明細層來自行彙總嗎? 是不是資料公共層團隊開發公共彙總層已經可以滿足自己的需求?對應大眾的、kpi相關的指標等通常設計良好的資料倉儲公共層肯定已經包含了,直接使用即可。

2、真的需要掃瞄那麼多分割槽嗎,比如對於銷售事務明細表來說,掃瞄一年的分割槽和掃瞄一周的分割槽所帶來的計算、io開銷完全是兩個數量級,所耗費時間肯定是不同的,所以開發人員要仔細考慮因為需求,盡量不浪費計算和儲存資源。

3、盡量不要使用select * from your_table這樣的方式,用到哪些列就指定哪些列,另外where條件中盡量新增過濾條件,以去掉無關的行,從而減少整個mapreduce任務寵需要處理、分發的資料量。

4、輸入檔案不要是大量的小檔案,hive預設的input split是128mb(可配置),小檔案可先合併成大檔案。

Hive中優化經驗小結

以下內容整理自學習資料和自己平時實踐中遇見的一些問題和經驗小結 避免記憶體溢位 將條目少的表 子查詢放在 join的左邊。原因是在 join 操作的 reduce 階段,位於 join左邊的表的內容會被載入進記憶體,將條目少的表放在左邊,可以有效減少發生記憶體溢位的機率。解決資料傾斜問題,多發生於資...

01 hive優化總結經驗

hive優化總結 hive是將符合sql語法的字串解析生成可以在hadoop上執行的mapreduce的工具。使用hive盡量按照分布式計算的一些特點來設計sql,和傳統關係型資料庫有區別,所以需要去掉原有關係型資料庫下開發的一些固有思維。基本原則 1 盡量盡早地過濾資料,減少每個階段的資料量,對於...

Hive專案經驗

1.hive的資料傳輸 hive 中的 null 在底層是以 n 來儲存,而 mysql 中的 null 在底層就是 null,為了 保證資料兩端的一致性。在匯出資料時採用 input null string 和 input null non string 兩個參 數。匯入資料時採用 null st...