【发布时间】:2019-03-29 12:35:28
【问题描述】:
我处理的是movielensdata提供的数据集movies.dat。前5行数据是
1:玩具总动员 (1995):冒险|动画|儿童|喜剧|奇幻
2:勇敢者游戏(1995):冒险|儿童|奇幻
3:脾气暴躁的老人 (1995):喜剧|爱情
4:等待呼气 (1995):喜剧|戏剧|爱情
5:新娘之父第二部分(1995):喜剧
我想计算每种类型的确切出现次数。为此,以下 mapreduce (python) 代码就足够了。
#!/usr/bin/env python
import sys
#mapper
for line in sys.stdin:
for genre in line.strip().split(":")[-1].split("|"):
print("{x}\t1".format(x=genre))
#!/usr/bin/env python
#reducer
import sys
genre_dict={}
for line in sys.stdin:
data=line.strip().split("\t")
if len(data)!=2:
continue
else:
if data[0] not in genre_dict.keys():
genre_dict[data[0]]=1
else:
genre_dict[data[0]]+=1
a=list(genre_dict.items())
a.sort(key=lambda x:x[1],reverse=True)
for genre,count in a:
print("{x}\t{y}".format(x=genre,y=count))
对于猪的查询做同样的任务有什么建议吗? 提前谢谢...
【问题讨论】:
标签: mapreduce apache-pig