与这篇博文有点关系的可以参考下:
① 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
标准读取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),结果如下:以列表形式输出。
标准读取每行数据,[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 ('%s\t%s'%(cur,','.join(cur_list)))
cur = key
cur_list = []
cur_list.append(val)
print ('%s\t%s'%(cur,','.join(cur_list)))
输出结果如下:符合要求。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_44775255/article/details/121091846
内容来源于网络,如有侵权,请联系作者删除!