1. 程式人生 > >MarReduce小練習 - 單表關聯(使用識別符號)

MarReduce小練習 - 單表關聯(使用識別符號)

題意:

根據兒子、父母關係,輸出孫子、爺奶關係:

輸入:                                      輸出:
在這裡插入圖片描述

分析:

使用識別符號 + - 區分父子,在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

整體過程如上。

具體程式碼見GitHub,專案名稱為 singleTableLink2

GitHub:https://github.com/GYT0313/MapReducePractice