MarReduce小练习 - 单表关联(使用标识符)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

整体过程如上。

具体代码见GitHub,项目名称为 singleTableLink2

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

猜你喜欢

转载自blog.csdn.net/qq_38038143/article/details/84786597