python中的hadoop映射器/ reducer

时间:2017-05-14 20:28:55

标签: python hadoop reducers

我想从3个数据库movies.dat,users.dat和ratings.dat中提取数据。识别具有最高平均男性评级值的电影减去平均女性评级和另一部具有最高女性评级值的电影减去平均男性评级。只有一部电影被男性评为最高评分但不是女性电影,而电影的评分最高的是女性而非男性。我已经编写了mapper.py的代码并希望减少数据,需要一些逻辑和代码方面的帮助。 这是我的mapper.py

for line in sys.stdin:
line=line.strip()  
lst = line.split("::")
if len(lst) == 4:
userID=lst[0]
        movieID=lst[1]
        rating=lst[2]
elif len(lst)==5:  
userID=lst[0]  
        gender=lst[1]
else:
movieID=lst[0]
print '%s, %s, %s'%(movieID,rating,gender)

1 个答案:

答案 0 :(得分:0)

如果有3个数据集,则以下内容应该是您的映射器。

import sys

for line in sys.stdin:


line=line.strip()  
lst = line.split("::")
if len(lst) == 5:
    user=lst[0]  
    gender=lst[1]
print '%s^%s^%s^%s^%s'%(user,gender,0,0,0)
elif len(lst)==4:
user=lst[0]
    movie=lst[1]
    rating=lst[2]
    print '%s^%s^%s^%s^%s'%(user,0,movie,rating,0)
else:
movie=lst[0]
title=lst[1]
print '%s^%s^%s^%s^%s'%(0,0,movie,0,title)