(http://youzitool.com 新博客,欢迎访问)
因为一次写7道题,文章太长了,为了方便大家阅读,我分成了两篇。
接着上一篇文章,我们继续mapreduce编程之旅~~
1004: 题目
Single Table Join
描述
输入文件是一个包含有子女-父母表的文件。请编写一个程序,输入为此输入文件,输出是包含在子女-父母表中的孙子女-祖父母关系表。
输入
输入是包含有子女-父母表的一个文件
输出
输出是包含有孙子女-祖父母关系的一个文件,孙子女-祖父母关系是从子女-父母表中得出的。
样例输入
child parent
Tom Lucy
Tom Jack
Jone Lucy
Jone Jack
Lucy Mary
Lucy Ben
Jack Alice
Jack Jesse
Terry Alice
Terry Jesse
Philip Terry
Philip Alma
Mark Terry
Mark Alma
样例输出
grandchild grandparent
Jone Alice
Jone Jesse
Tom Alice
Tom Jesse
Jone Mary
Jone Ben
Tom Mary
Tom Ben
Mark Jesse
Mark Alice
Philip Jesse
Philip Alice
1004:解题思路
单表的连接,这个比较有味道~~当然有可能是我水平有问题,所以写的比较复杂。
首先,我定义了一个自定义数据类型TextPair 关于自定义数据类型我这里也不多说了,大家可以百度一下,或者看看hadoop权威指南上面都会讲解。
接着:我们从输入可以看出,孩子和双亲都写在同一个文件,而我们要求的是祖孙关系,所以双亲类也会出现在孩子列。为了正确区分,所以我们借助自定义数据类型来完成。
我先上代码,在代码中我会详细注释: