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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

hive数据倾斜的解决办法

發布時間:2025/7/14 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive数据倾斜的解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據傾斜是進行大數據計算時常見的問題。主要分為map端傾斜和reduce端傾斜,map端傾斜主要是因為輸入文件大小不均勻導致,reduce端主要是partition不均勻導致。

在hive中遇到數據傾斜的解決辦法:

一、傾斜原因:map端緩慢,輸入數據文件多,大小不均勻

當出現小文件過多,需要合并小文件。可以通過set hive.merge.mapfiles=true來解決。

set hive.map.aggr=true; //map端部分聚合,相當于Combiner,可以減小壓力(默認開啟)

set hive.groupby.skewindata=true(默認關閉);//有數據傾斜的時候進行負載均衡,當選項設定為 true,生成的查詢計劃會有兩個 MR Job。第一個 MR Job 中,Map 的輸出結果集合會隨機分布到 Reduce 中,每個 Reduce 做部分聚合操作,并輸出結果,這樣處理的結果是相同的 Group By Key 有可能被分發到不同的 Reduce 中,從而達到負載均衡的目的;第二個 MR Job 再根據預處理的數據結果按照 Group By Key 分布到 Reduce 中(這個過程可以保證相同的 Group By Key 被分布到同一個 Reduce 中),最后完成最終的聚合操作。

單個文件大小稍稍大于配置的block塊的大寫,此時需要適當增加map的個數。解決方法:set mapred.map.tasks個數

文件大小適中,但map端計算量非常大,如select id,count(*),sum(case when...),sum(case when...)...需要增加map個數。解決方法:set mapred.map.tasks個數,set mapred.reduce.tasks個數

二、當遇到一個大表和一個小表進行join操作時

解決方法:小表在join左側,大表在右側,或使用mapjoin 將小表加載到內存中。然后再對比較大的表進行map操作。

join就發生在map操作的時候,這里的join并不會涉及reduce操作。map端join的優勢就是在于沒有shuffle,

如:select /*+ MAPJOIN(a) */?

a.c1, b.c1 ,b.c2 from a join b?

where a.c1 = b.c1;?

三、遇到需要進行join的但是關聯字段有數據為null,如表一的id需要和表二的id進行關聯,null值的reduce就會落到一個節點上

解決方法1:子查詢中過濾掉null值,id為空的不參與關聯

解決方法2:用case when給空值分配隨機的key值(字符串+rand())

四、不同數據類型關聯產生數據傾斜

場景:一張表s8的日志,每個商品一條記錄,要和商品表關聯。但關聯卻碰到傾斜的問題。s8的日志中有字符串商品id,也有數字的商品id,類型是string的,但商品中的數字id是bigint的。猜測問題的原因是把s8的商品id轉成數字id做hash來分配reduce,所以字符串id的s8日志,都到一個reduce上了,解決的方法驗證了這個猜測。

解決方法:把數字類型轉換成字符串類型

Select * from s8_log aLeft outer join r_auction_auctions bOn a.auction_id = cast(b.auction_id as string);

五、當HiveQL中包含count(distinct)時

如果數據量非常大,執行如select a,count(distinct b) from t group by a;類型的SQL時,會出現數據傾斜的問題。

解決方法:使用sum...group by代替。如select a,sum(1) from (select a, b from t group by a,b) group by a;

六、join和Group的優化?
2.1 對于普通的join操作,會在map端根據key的hash值,shuffle到某一個reduce上去,在reduce端做join連接操作,內存中緩存join左邊的表,遍歷右邊的表,一次做join操作。所以在做join操作時候,將數據量多的表放在join的右邊。?
當數據量比較大,并且key分布不均勻,大量的key都shuffle到一個reduce上了,就出現了數據的傾斜。?

在map端產生join

? ? ? ? ?mapJoin的主要意思就是,當鏈接的兩個表是一個比較小的表和一個特別大的表的時候,我們把比較小的table直接放到內存中去,然后再對比較大的表格進行map操作。join就發生在map操作的時候,每當掃描一個大的table中的數據,就要去去查看小表的數據,哪條與之相符,繼而進行連接。這里的join并不會涉及reduce操作。map端join的優勢就是在于沒有shuffle,


2.2 對于Group操作,首先在map端聚合,最后在reduce端坐聚合,hive默認是這樣的,以下是相關的參數?
· hive.map.aggr = true是否在 Map 端進行聚合,默認為 True?
· hive.groupby.mapaggr.checkinterval = 100000在 Map 端進行聚合操作的條目數目

轉載自:https://www.cnblogs.com/kongcong/p/7777092.html

轉載于:https://www.cnblogs.com/wangbin2188/p/10364375.html

總結

以上是生活随笔為你收集整理的hive数据倾斜的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 深夜国产福利 | 国产女人和拘做受视频免费 | 男女激情免费网站 | 欧美极品少妇xxxxⅹ免费视频 | 亚洲精品免费在线观看视频 | 国产日本一区二区三区 | 亚洲一区二区在线电影 | 亚洲天堂av免费在线观看 | 日韩电影福利 | 国产无遮挡a片又黄又爽 | 欧美精品一级二级 | 国产第二页 | 操穴网站 | 日本大奶视频 | av福利院 | 亚洲欧美字幕 | 亚州欧美| 中国成人毛片 | 天天干天天色 | 国产精品视频自拍 | 亚洲色吧 | 成人做爰黄 | free黑人多人性派对hd | 亚洲一卡二卡三卡四卡 | 特级av| 欧美精品在线一区 | 葵司有码中文字幕二三区 | 精品国产视频一区二区三区 | 伊人欧美| 非洲黑寡妇性猛交视频 | 黄大色黄大片女爽一次 | 久久6视频| 国产一区二区三区免费观看 | 熟妇一区二区三区 | 国产视频在线播放 | 男人天堂怡红院 | 成人午夜大片 | 亚洲专区欧美 | 日韩人妻无码一区二区三区 | 露胸app| 中文字幕一区二区三区四区不卡 | 爆操老女人 | 久久蜜桃av一区二区天堂 | 一区二区日本视频 | 天天干天天草天天射 | 91视频看看| 蜜臀av粉嫩av懂色av | 深夜视频免费在线观看 | 亚洲 欧美 激情 小说 另类 | 日本两性视频 | 一本大道东京热无码 | 91av免费 | 国产乱子轮xxx农村 岛国久久久 | 天天干天天操天天射 | 天天干天天弄 | 国产视频高清 | 波多野吉衣一区二区三区 | 久久精品视频18 | 国产高清在线 | 中文在线√天堂 | 国产成人无码AA精品区 | 成人av在线资源 | 成人黄色av网站 | 免费一级片视频 | 欧美 亚洲 一区 | 91丝袜一区二区三区 | 蜜桃av网站| 国产一区二区免费看 | 欧洲精品久久久 | 天天免费视频 | 色天使亚洲| 91久久久久国产一区二区 | 成人日批| 国产区第一页 | 在线男人天堂 | 韩国一区二区在线播放 | 伊人资源 | 亚洲第5页 | 日韩va亚洲va欧美va久久 | 日韩精品毛片 | 久久久久久亚洲av毛片大全 | 雪花飘电影在线观看免费高清 | 欧美激情视频二区 | aaa黄色一级片 | 国产精品丝袜视频 | 日韩免费高清一区二区 | 美丽的姑娘观看在线播放 | 1024中文字幕 | 成人动漫在线观看 | 欧美福利网址 | 黄色在线观看网站 | 免费在线日本 | 日本高清视频一区二区三区 | 小早川怜子一区二区三区 | av片在线免费看 | 精品国语对白 | 爆操av| 一二级毛片| 66亚洲一卡2卡新区成片发布 |