练习1:有如下的数据,其中第一列为用户ID,后面数列为他的朋友ID
A B C D E F
B A H C D E I
C B E G A J
D A B E
E H A B C D G
F A J G
G C E F I
H B J E
I G B
J H C F
编写map-reduce任务完成:找到所有有共同朋友的用户ID对
生成格式为 (用户ID,用户ID 共同朋友ID)
B,C A
D,A E
1.创建文本文件1.txt用于保存数据
vim 1.txt
A B C D E F
B A H C D E I
C B E G A J
D A B E
E H A B C D G
F A J G
G C E F I
H B J E
I G B
J H C F
2.编写mapper
vim mapper.py
#!/usr/bin/env python
import sys
for line in sys.stdin:
line = line.strip()
ids = line.split()
for id in ids[1:]:
print '%s\t%s'%(id,ids[0])
3.编写reducer
#!/usr/bin/env python
#__coding:utf8__
import sys
from operator import itemgetter
#用于保存当前共同朋友的id
current_common_id = None
#用于保存上一个共同朋友的id
common_id = None
#定义列表,用于保存有共同朋友的所有用户id
current_ids = []
for line in sys.stdin: