日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Hive优化(再一遍系统复习)

發布時間:2023/12/10 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hive优化(再一遍系统复习) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Hive優化(或者面試問你工作中遇到的問題就可以答hive優化)

  • select * 是不走MR程序的
  • 可以開啟本地模式local(當文件小于默認128M且文件數少于4個,不走MR)
  • 表的優化
    (1) 小表 join 大表
    將key相對分散,并且數據量小的表放在jon左邊,這樣可以有效減少內存溢出(OOM)錯誤發生幾率;在進一步可以開啟MapJoin讓小維度的表先進入內存,在map端完成reduce(注:現在用的hive版本本身已經進行了優化,所以小表放在前或者后沒有明顯區別)
    (2)大表 Join 大表
    1.空key過濾(一般數據清洗已經被過濾掉了,臟數據需要進行過濾)
    2.空key轉換
    有時某個key為空,但是并不是異常數據,此時可以給空key字段賦一個隨機值,使數據隨機均勻地分布在reduce上(要不然空key數據會都被分配到一個reduce里,造成數據傾斜)
  • MapJoin(默認是開啟的)(小表join大表時使用,可以有效提高效率)
    內存足夠大可以把閾值調大(默認25M以下認為是小表)
    set hive.mapjoin.smalltable.filesize = ?;
    MapJoin工作機制:join機制在map階段完成,把小表全部加載到內存在map端進行join,避免reduce處理。
  • Group By
    (1) (默認情況,map階段同一key數據分發給一個reduce,當一個key數據過大時就會發生數據傾斜)
    (2) 并不是聚合操作都要在reduce完成,也可以開啟map端進行預聚合(combiner)(默認是開啟的)
    (3)在發現有數據傾斜的時候可以打開負載均衡(默認是false)
    hive.groupby.skewindata = true;(確定存在數據傾斜時打開)
    開啟后會生出兩個MRJob,第一個job中,map的輸出結果會隨機分布到reduce中,每個reduce做部分聚合,并輸出結果;第二個Job再根據預處理的結果按照group by key分布到reduce中,最后完成最終聚合。
  • count(distinct) 去重統計(盡量不用,用groupby來代替)
    先group by 再count,避免oom或者數據傾斜
    只有一個reducer在進行count(distinct)的計算
  • 盡量避免使用笛卡爾積,join的時候不加on條件或者無效on,hive只能使用1個reduce來完成笛卡爾積(生產環境中會關閉掉笛卡爾積 [會設置成嚴格模式])
  • 行列過濾
    (1)列處理:少用select *
    (2)行處理:當使用外關聯時,如果將副表過濾,條件寫在where后面,那么就會全表關聯,之后在過濾,那么副表就要先子查詢在進行join。
  • 動態分區調整(根據分區字段進行分區):需要配置參數,最大分區數、每個reduce分區數等參數。根據字段的不同個數來進行設定,每個reduce分區數少于不同字段個數會報錯。
    10.MR優化
    (1)合理設置map數
    (2)合理設置reduce數
    (3)并行執行
    設置參數hive.exec.parallel = true;
    hive會將一個查詢轉換成一個或多個階段,階段可以是MR、抽樣階段、合并階段、limit階段。多個階段并行度越高,job完成越快。
    (4)嚴格模式(嚴格模式下,笛卡爾積不被允許,分區表未指定分區不被允許等),在生成環境中是開啟的,默認是false。
  • 總結

    以上是生活随笔為你收集整理的Hive优化(再一遍系统复习)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。