MarReduce小練習 - 單表關聯(使用識別符號)
阿新 • • 發佈:2018-12-04
題意:
根據兒子、父母關係,輸出孫子、爺奶關係:
輸入: 輸出:
分析:
使用識別符號 + - 區分父子,在Mapper端同一行資料交換順序輸出兩次(key值不新增標識)。
如:
輸入為:
Tom Lucy
Lucy Mary
Mapper端處理context.write()為:
<Tom, +Lucy>
<Lucy, -Tom>
<Lucy, +Mary>
<Mary, -Lucy>
Mapper端經過,歸併排序後(MapReducer框架自己實現),輸出到Reducer端的內容如下:
<Lucy, <-Tom,+Mary>>
至於<Tom, <+Lucy, +Jack>>這類資料不能提取爺孫關係,不是想要的輸出結果,會在遍歷的時不輸出。
在Reducer端,遍歷values值,根據第一個字元為+還是-判斷關係,經過處理則輸出:
Tom Mary
整體過程如上。