前言
為什么把源數(shù)據(jù)預(yù)處理和過濾掉傾斜的key兩種處理傾斜的方式寫到一起?
因?yàn)檫@兩種方式在實(shí)際的項(xiàng)目中場(chǎng)景較少而且單一,對(duì)于數(shù)據(jù)源預(yù)處理,比如原本要在spark中進(jìn)行聚合或join的操作,提前到hive中去做,這種方式雖然解決了spark中數(shù)據(jù)傾斜的問題,但是hive中依然也會(huì)存在;而過濾傾斜的key的場(chǎng)景就更加少了。文章來源:http://www.zghlxwxcb.cn/news/detail-485610.html
不過雖然少見,也需要有這樣的解決問題思維。文章來源地址http://www.zghlxwxcb.cn/news/detail-485610.html
使用Hive ETL預(yù)處理數(shù)據(jù)
-
適用場(chǎng)景
導(dǎo)致數(shù)據(jù)傾斜的是Hive表。如果該Hive表中的數(shù)據(jù)本身很不均勻(比如某個(gè)key對(duì)應(yīng)了100萬數(shù)據(jù),其他key才對(duì)應(yīng)了10條數(shù)據(jù)),而且業(yè)務(wù)場(chǎng)景需要頻繁使用Spark對(duì)Hive表執(zhí)行某個(gè)分析操作,那么比較適合使用這種技術(shù)方案。 -
實(shí)現(xiàn)思路
此時(shí)可以評(píng)估一下,是否可以通過Hive來進(jìn)行數(shù)據(jù)預(yù)處理(即通過Hive ETL預(yù)先對(duì)數(shù)據(jù)按照key進(jìn)行聚合,或者是預(yù)先和其他表進(jìn)行join),然后在Spark作業(yè)中針對(duì)的數(shù)據(jù)源就不是原來的Hive表了,而是預(yù)處理后的Hive表。此時(shí)由于數(shù)據(jù)已經(jīng)預(yù)先進(jìn)行過聚合或join操作了,那么在Spark作業(yè)中也就不需要使用原先的shuffle類算子執(zhí)行這類操作了。 -
實(shí)現(xiàn)原理
這種方案從根源上解決了數(shù)據(jù)傾斜,因?yàn)閺氐妆苊饬嗽赟p
到了這里,關(guān)于Spark數(shù)據(jù)傾斜解決方案一:源數(shù)據(jù)預(yù)處理和過濾傾斜key的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!