Я пытаюсь написать редуктор картографирования для Hadoop, чтобы найти фильмы с 5-ю оценками «популярных фильмов» для каждой возрастной группы.
Я пишу это mapper.py
, чтобы присоединиться к набору данных буксировки с пользователемИдентификатор для получения возраста из пользовательских данных и рейтинга с названием фильма из набора рейтинговых данных.
! / Usr / bin / env python:
import sys
for line in sys.stdin:
# remove leading and trailing whitespace
line = line.strip()
line = line.split("::")
rating = "-1"
movie = "-1"
user = "-1"
age = "-1"
if len(line) == 4 :
#ratings data
rating = line[2]
movie = line[1]
user = line[0]
#print '%s %s %s' % (user,movie,rating)
else:
# users data
user = line[0]
age = line[2]
print '%s\t%s\t%s\t%s' % (user,age,rating,movie)
это данные рейтинга структуры данных: идентификатор пользователя, идентификатор фильма, рейтинг, метка времени Данные пользователя: идентификатор пользователя, пол, возраст, род занятий
Редуктор, который я написал, вообще не работает, он дал мне 0 результатов.
Я хочу, чтобы результат был самым популярным фильмом для каждой возрастной группы:
1 2254
4567
18 8732
0987
0986
25 7654
8765
7658
35 6543
7645
7654
45 7654
8765
5433
50 7652
1876
7654
56 3986
3956