版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38038143/article/details/84786597
题意:
根据儿子、父母关系,输出孙子、爷奶关系:
输入: 输出:
分析:
使用标识符 + - 区分父子,在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
整体过程如上。