栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Linux:reduce实现 合并列表数据

Linux:reduce实现 合并列表数据

文章目录
    • 创建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))) 

输出结果如下:符合要求。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/439271.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号