99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-10-25 閱讀量: 1158
hive表關(guān)聯(lián)查詢,如何解決數(shù)據(jù)傾斜的問題?

傾斜原因:

map輸出數(shù)據(jù)按key Hash的分配到reduce中,由于key分布不均勻、業(yè)務(wù)數(shù)據(jù)本身的特、建表時考慮不周、等原因造成的reduce 上的數(shù)據(jù)量差異過大。

1)、key分布不均勻;

2)、業(yè)務(wù)數(shù)據(jù)本身的特性;

3)、建表時考慮不周;

4)、某些SQL語句本身就有數(shù)據(jù)傾斜;

如何避免:對于key為空產(chǎn)生的數(shù)據(jù)傾斜,可以對其賦予一個隨機(jī)值。

解決方案

1>.參數(shù)調(diào)節(jié):

hive.map.aggr = true

hive.groupby.skewindata=true

有數(shù)據(jù)傾斜的時候進(jìn)行負(fù)載均衡,當(dāng)選項設(shè)定位true,生成的查詢計劃會有兩個MR Job。第一個MR Job中,Map的輸出結(jié)果集合會隨機(jī)分布到Reduce中,每個Reduce做部分聚合操作,并輸出結(jié)果,這樣處理的結(jié)果是相同的Group By Key有可能被分發(fā)到不同的Reduce中,從而達(dá)到負(fù)載均衡的目的;第二個MR Job再根據(jù)預(yù)處理的數(shù)據(jù)結(jié)果按照Group By Key 分布到 Reduce 中(這個過程可以保證相同的 Group By Key 被分布到同一個Reduce中),最后完成最終的聚合操作。

2>.SQL 語句調(diào)節(jié):

1)、選用join key分布最均勻的表作為驅(qū)動表。做好列裁剪和filter操作,以達(dá)到兩表做join 的時候,數(shù)據(jù)量相對變小的效果。

2)、大小表Join:

使用map join讓小的維度表(1000 條以下的記錄條數(shù))先進(jìn)內(nèi)存。在map端完成reduce.

4)、大表Join大表:

把空值的key變成一個字符串加上隨機(jī)數(shù),把傾斜的數(shù)據(jù)分到不同的reduce上,由于null 值關(guān)聯(lián)不上,處理后并不影響最終結(jié)果。

5)、count distinct大量相同特殊值:

count distinct 時,將值為空的情況單獨(dú)處理,如果是計算count distinct,可以不用處理,直接過濾,在最后結(jié)果中加1。如果還有其他計算,需要進(jìn)行g(shù)roup by,可以先將值為空的記錄單獨(dú)處理,再和其他計算結(jié)果進(jìn)行union。

9.7428
2
關(guān)注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子