解決資料傾斜問題

2021-09-20 23:00:09 字數 1714 閱讀 3863

方法:解決資料傾斜問題

解決方法1. user_id為空的不參與關聯,例如:

1

2

3

4

5

6

7

8

9

select*

fromlog a

joinbmw_users b

ona.user_idisnotnull

anda.user_id = b.user_id

unionall

select*

fromlog a

wherea.user_idisnull.

解決方法2 :

1

2

3

4

select*

fromlog a

leftouterjoinbmw_users b

oncasewhena.user_idisnullthenconcat(『dp_hive』,rand() )elsea.user_idend= b.user_id;

總結:2比1效率更好,不但io少了,而且作業數也少了。1方法log讀取兩次,jobs是2。2方法job數是1 。這個優化適合無效id(比如-99,』』,null等)產生的傾斜問題。把空值的key變成乙個字串加上隨機數,就能把傾斜的資料分到不同的reduce上 ,解決資料傾斜問題。因為空值不參與關聯,即使分到不同的reduce上,也不影響最終的結果。附上hadoop通用關聯的實現方法(關聯通過二次排序實現的,關聯的列為parition key,關聯的列c1和表的tag組成排序的group key,根據parition key分配reduce。同一reduce內根據group key排序)。

1

Hive解決資料傾斜問題

簡單來說資料傾斜就是資料的key 的分化嚴重不均,造成一部分資料很多,一部分資料很少的局面。舉個 word count 的入門例子,它的map 階段就是形成 aaa 1 的形式,然後在reduce 階段進行 value 相加,得出 aaa 出現的次數。若進行 word count 的文字有100g,...

Hive解決資料傾斜問題

什麼是資料傾斜以及資料傾斜式怎麼產生的?簡單來說資料傾斜就是資料的key的分化嚴重不均,造成一部資料很多,一部分資料很少的局面。舉個 word count 的入門例子,它的map 階段就是形成 aaa 1 的形式,然後在reduce 階段進行 value 相加,得出 aaa 出現的次數。若進行 wo...

怎麼解決資料傾斜問題?

本文面向的讀者是從事資料分析 資料處理 etl 等相關工作的朋友們,相信大家在工作中一定遇到過資料傾斜的問題,讀完本文,你會了解到資料傾斜的定義及其危害 產生的原因及應對措施 常見傾斜場景及解決辦法等知識,相信對你今後處理資料傾斜問題會有一定的幫助。目前流行的大資料相關的計算框架之所以能夠處理大量的...