Im пытается запустить простую карту сократить работу и получил следующие наборы данных:объекта не распознаются при выполнении MapReduce работы
bike.txt
1 Bike 1
2 Bike 2
3 Bike 4
4 Bike 4
5 Bike 4
bikenames.txt
1,Aap
2,Noot
3,Greet
4,Mies
5,Gazelle
Моя цель - написать задание mapreduce, в котором больше всего указано название велосипеда. Поэтому я написал следующее:
from mrjob.job import MRJob
from mrjob.step import MRStep
class MostPopularBike(MRJob):
def configure_options(self):
super(MostPopularBike, self).configure_options()
self.add_file_option('--items', help='Path to u.item')
def steps(self):
return [
MRStep(mapper=self.mapper_get_ratings,
reducer=self.reducer_count_ratings),
MRStep(mapper = self.mapper_passthrough,
reducer = self.reducer_find_max)
]
def mapper_get_ratings(self, _, line):
(bikeID, name) = line.split('\t')
yield bikeID, 1
def reducer_init(self):
self.bikeNames = {}
with open("bikenames.txt`") as f:
for line in f:
fields = line.split(',')
self.bikeNames[fields[0]] = fields[1]
def reducer_count_ratings(self, key, values):
yield None, (sum(values), self.bikeNames[key])
def mapper_passthrough(self, key, value):
yield key, value
def reducer_find_max(self, key, values):
yield max(values)
if __name__ == '__main__':
MostPopularBike.run()
Если я пытаюсь запустить его с помощью:
!python MostPopularBike.py --items=bikenames.txt bike.txt
Это trows следующее сообщение об ошибке, однако:
AttributeError: 'MostPopularBike' object has no attribute 'bikeNames'
Любые мысли о том, что здесь идет не так?
Это не дает ответа на этот вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. - [Из обзора] (/ review/low-quality-posts/12712320) – IanS
@IanS, согласовано. Отредактировал мой ответ. – Riaz