- 创建map.py
- 创建red.py
与这篇博文有点关系的可以参考下:
① MapReduce 计算框架 —— 执行流程详解
② 在Linux环境实现wordcount:mapper,reducer的代码创建,脚本实现map,reduce
③ Linux实现 map 返回列表形式操作
④ Linux hadoop 脚本实现 reduce合并数据
要求:把key整合起来,value成列表形式。
首先,准备数据 1.data,t 分割符。
sort1 1 sort2 3 sort2 88 sort2 54 sort1 2 sort6 22 sort6 58 sort6 888
我们要想实现的结果如下:
user_id order_id_list sort1 1,2 sort2 3,54,88 sort6 22,58,888
创建map.py
标准读取1.data数据,读取每行数据以 t 分隔;join连接输出为字符串类型。
import sys
for line in sys.stdin:
key = line.strip().split('t')
print ('t'.join(key))
#print(key)
输入命令:cat 1.data | python map.py | sort -k1
注释 print (’t’.join(key)),输出:print(key),结果如下:以列表形式输出。
创建red.py
标准读取每行数据,[0]是key,[1]是value。
import sys
cur = None
cur_list = []
for line in sys.stdin:
ss = line.strip().split('t')
key = ss[0]
val = ss[1]
if cur == None:
cur = key
elif cur!=key:
print ('%st%s'%(cur,','.join(cur_list)))
cur = key
cur_list = []
cur_list.append(val)
print ('%st%s'%(cur,','.join(cur_list)))
输出结果如下:符合要求。



