2017-05-14 7 views
0

movie.dat, users.dat 및 ratings.dat 데이터베이스에서 데이터를 추출하고 싶습니다. 평균 남성 등급에서 평균 여성 등급을 뺀 값이 가장 높은 영화와 평균 여성 등급에서 남성 평균 등급을 뺀 값이 가장 높은 영화를 식별합니다. 남성이 가장 높게 평가하지만 여성은 영화가 아닌 영화는 여성이 가장 높지만 남성은 그렇지 않습니다. mapper.py에 대한 코드를 작성했으며 데이터를 줄이려면 논리 및 코드에 대한 도움이 필요합니다. 은 여기 내 mapper.pypython의 hadoop 매퍼/감속기

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) 

답변

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) 
+0

나는 감속기에 대한 코드를 원한다! –