Я имею дело с набором данных movies.dat, предоставленным movielensdata.Первые 5 строк данных:
1: История игрушек (1995): Приключения | Анимация | Дети | Комедии | Фэнтези
2: Джуманджи (1995): Приключения | Дети | Фэнтези
3:Grumpier Old Men (1995): Комедия | Романтика
4: В ожидании выдоха (1995): Комедия | Драма | Романтика
5: Отец невесты Часть II (1995): Комедия
Iхочу посчитать точное количество вхождений каждого жанра.Для этого достаточно следующего кода 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))
Есть ли какие-нибудь предложения для запроса свиньи выполнить ту же задачу?Заранее спасибо ...