資料傾斜方案之聚合源資料

2021-08-21 14:51:46 字數 1322 閱讀 2811

效能調優,最有效,最直接,最簡單的方式,就是加資源,加並行度,注意rdd架構(復用同乙個rdd,加上cache快取);shuffle,jvm等,是次要的。

資料傾斜,解決方案:

第乙個方案:聚合源資料

現在,做一些聚合操作,groupbykey,reducebykey這種操作,說白了,就是拿到每個key對應的values;reducebykey,說白了,就是對每個key對應的values執行一定的計算。

現在這些操作,比如groupbykey和reducebykey,包括join,都是在spark作業中執行的

spark作業的資料**,通常是**?90%情況下,資料**都是hive表(hdfs,大資料分布式儲存系統),hdfs上儲存的大資料,進行各種各樣的計算,hive表中的資料,通常是怎麼出來的呢?有了spark以後,hive比較適合做什麼事情,hive就是適合做離線的,晚上凌晨跑的,etl(資料的採集,清洗,匯入) ,從而去形成完整的hive中的資料倉儲,說白了,資料倉儲中就是一頓表,

spark作業的源表,hive表,其實通常情況下來說,也是通過某些hive etl生成的,hive etl可能是晚上凌晨在那跑,今天跑昨天的資料就可以

現在出現資料傾斜,某個key對應的88萬資料,某些key對應幾百條,某些key對應幾十條,現在,直接在生成hive表的etl中,對資料進行聚合。比如按key來分組,將key對應的所有的values,全部用一種特殊的格式,拼接到乙個字串裡面去,比如「key = seesion, value:action_seq = 1 | user_id=1|search_keyword="火鍋"」。。。

對key進行group,在spark中,拿到key=sessionid,values,hive etl中,直接對key進行了聚合,那麼也就意味著,每個key只是對應了一條資料,在spark中就不需要再去執行groupbykey+map這種操作了,直接對每個key對應的values字串,map操作,進行你需要的操作即可

spark,可能就對這個操作,就不需要執行shuffle操作了,那麼也就不可能導致資料傾斜了

第二個方案:過濾導致傾斜的key

你可能沒有辦法對每個key,就聚合出來一條資料,那麼也可以做乙個妥協,對每個key對應的資料,10萬條,有好幾個粒度,比如10萬條包含了幾個城市,幾天,幾個地區的資料,現在放粗粒度;直接就按照城市的粒度,做一下聚合,幾個城市,幾天,幾個地區粒度的資料,都給聚合起來,比如說

city_id date area_id

select 。。。。 from . group by city_id將粒度放粗

盡量去聚合,減少每個key對應的數量,也許聚合到比較粗的粒度後,原先有10萬資料量的key,現在只有1萬資料量。減輕資料傾斜的現象和問題

資料傾斜解決方案之聚合源資料

資料傾斜的解決,跟之前講解的效能調優,有一點異曲同工之妙。效能調優,跟大家講過乙個道理,重劍無鋒 效能調優,調了半天,最有效,最直接,最簡單的方式,就是加資源,加並行度,注意rdd架構 復用同乙個rdd,加上cache快取 shuffle jvm等,次要的。資料傾斜,解決方案,第乙個方案和第二個方案...

Spark專案實戰 資料傾斜解決方案之聚合源資料

資料傾斜的解決跟之前講解的效能調優,有一點異曲同工之妙。效能調優,其實調了半天,最有效 最直接 最簡單的方式就是加資源,加並行度,注意rdd架構 復用同乙個rdd,加上cache快取 而shuffle jvm等都是調優次要的。資料傾斜問題最直接 最有效 最簡單的方案就是 聚合源資料和過濾導致傾斜的k...

資料傾斜解決方案

資料傾斜定義 簡單的講,資料傾斜就是我們在資料計算的時候,由於資料的分散度不夠,導致大量的資料集中到了一台或者幾台機器上計算,這些機器的計算速度遠遠低於整個集群的平均計算速度,導致整個計算過程十分緩慢。常見資料傾斜現象 資料傾斜往往會發生在資料開發的各個環節中,比如 用hive資料計算的時候redu...