對spark算子aggregateByKey的理解

案例

aggregateByKey算子其實相當于是針對不同“key”數(shù)據(jù)做一個map+reduce規(guī)約的操作。

舉一個簡單的在生產(chǎn)環(huán)境中的一段代碼
有一些整理好的日志字段,經(jīng)過處理得到了RDD類型為(String,(String,String))的List格式結(jié)果查刻,其中各個String代表的是:(用戶名,(訪問時間,訪問頁面url))
同一個用戶可能在不同的時間訪問了不同或相同的頁面,為了合并同一個用戶的訪問行為岖赋,寫了下面這段代碼,用到aggregateByKey瓮孙。

val data = sc.parallelize(
List(
("13909029812",("20170507","http://www.baidu.com")),("18089376778",("20170401","http://www.google.com")),("18089376778",("20170508","http://www.taobao.com")),("13909029812",("20170507","http://www.51cto.com"))
)
)
        data.aggregateByKey(scala.collection.mutable.Set[(String, String)](), 200)((set, item) => {
          set += item
        }, (set1, set2) => set1 union set2).mapValues(x => x.toIterable).collect

結(jié)果:

res12: Array[(String, Iterable[(String, String)])] = Array((18089376778,Set((20170401,http://www.google.com), (20170508,http://www.taobao.com))), (13909029812,Set((20170507,http://www.51cto.com), (20170507,http://www.baidu.com))))

分解分析:##

aggregateByKey(參數(shù)1)(參數(shù)2贾节,參數(shù)3)

過程:對于data的某個key,參數(shù)1為初始化值衷畦,在參數(shù)2的函數(shù)中,初始值和該key的每一個value傳入函數(shù)進行操作知牌,所有返回的結(jié)果在參數(shù)3中進行規(guī)約祈争。

  • 參數(shù)1
  scala.collection.mutable.Set[(String, String)]()

new 了一個空的set集合,做為初始值

  • 參數(shù)2
    (set, item) => {
    set += item
    }
    一個類似于map的映射函數(shù)角寸,將該key的每一個value(在本案例之是(訪問時間菩混,訪問url))作為item,將其放入set中并返回扁藕。
    可知某個key的所有value都會返回一個含有該value的set

  • 參數(shù)3
    (set1, set2) => set1 union set2
    該key的所有value得到的set進行union規(guī)約沮峡。并返回

最終結(jié)果:得到了每一個用戶在所有時間的訪問url的行為信息。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末亿柑,一起剝皮案震驚了整個濱河市邢疙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌望薄,老刑警劉巖疟游,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痕支,居然都是意外死亡颁虐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門卧须,熙熙樓的掌柜王于貴愁眉苦臉地迎上來另绩,“玉大人,你說我怎么就攤上這事花嘶∷褡眩” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵椭员,是天一觀的道長干签。 經(jīng)常有香客問我,道長拆撼,這世上最難降的妖魔是什么容劳? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任喘沿,我火速辦了婚禮,結(jié)果婚禮上竭贩,老公的妹妹穿的比我還像新娘蚜印。我一直安慰自己,他們只是感情好留量,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布窄赋。 她就那樣靜靜地躺著,像睡著了一般楼熄。 火紅的嫁衣襯著肌膚如雪忆绰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天可岂,我揣著相機與錄音错敢,去河邊找鬼。 笑死缕粹,一個胖子當著我的面吹牛稚茅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播平斩,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼亚享,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绘面?” 一聲冷哼從身側(cè)響起欺税,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揭璃,沒想到半個月后魄衅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡塘辅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年晃虫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扣墩。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡哲银,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呻惕,到底是詐尸還是另有隱情荆责,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布亚脆,位于F島的核電站做院,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜键耕,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一寺滚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屈雄,春花似錦村视、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惋嚎,卻和暖如春杠氢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背另伍。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工鼻百, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人质况。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像玻靡,于是被迫代替她去往敵國和親结榄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容