1、原始数据
A:B,C,D,E,O
B:A,C,E,K
C:F,A,D,I
D:A,E,F,L
E:B,C,D,M,L
F:A,B,C,D,E,O,M
G:A,C,D,E,F
H:A,C,D,E,O
I:A,O
J:B,O
K:A,C,D
L:D,E,F
M:E,F,G
O:A,H,I,J
2、解题思路:
第一步:
map
读一行 A:B,C,D,E,O
输出 <B,A><C,A><D,A><E,A><O,A>
再读一行 B:A,C,E,K
输出 <A,B><C,B><E,B><K,B>reduce操作:
拿到的数据比如说:<C,A><C,B><C,E><C,F><C,G>.......
输出
<A-B,C><A-E,C><A-F,C><A-G,C><B-E,C><B-F,C>.......第二步:
map:
读入一行: <A-B,C>
直接输出: <A-B,C>reduce操作:
读入数据:<A-B,C><A-B,D><A-B,F>......
输出:A-B C,F,G
3、代码实现(分两步)
第一步:
package cn.itacst.mr.ShareParents;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class ShareParentsSte