我正在尝试在python中使用MRJob软件包。我想将文件(u.item)和代码一起发送到所有节点,因此我使用configure_options函数并使用add_file_option告诉python我将在命令行中向您发送文件。当我运行此命令时: !python MostPopularMovieNicer.py --items = u.item u.data 一切都停止了,python冻结了,却没有显示任何内容。
我已经运行了trace命令,并收到以下错误消息: TypeError:需要一个类似字节的对象,而不是'str'
从mrjob.job导入MRJob 从mrjob.step导入MRStep
类MostPopularMovieNicer(MRJob):
def configure_options(self):
super(MostPopularMovieNicer, self).configure_options()
self.add_file_option('--items', help='Path to u.item')
def steps(self):
return [
MRStep(mapper=self.mapper_get_ratings,
reducer_init=self.reducer_init,
reducer=self.reducer_count_ratings),
MRStep(reducer = self.reducer_find_max)
]
def mapper_get_ratings(self, _, line):
(userID, movieID, rating, timestamp) = line.split('\t')
yield movieID, 1
def reducer_init(self):
self.movieNames = {}
with open("u.ITEM", encoding='ascii', errors='ignore') as f:
for line in f:
fields = line.split('|')
self.movieNames[fields[0]] = fields[1]
def reducer_count_ratings(self, key, values):
yield None, (sum(values), self.movieNames[key])
def reducer_find_max(self, key, values):
yield max(values)
如果名称 =='主要”: MostPopularMovieNicer.run()
未显示任何错误,并且python冻结。我必须退出软件才能运行其他代码。
答案 0 :(得分:0)
您应该使用 configure_args 和 add_file_arg 而不是configure_options和add_file_option。 configure_options在MRjob中不再可用。 该链接可能会帮助您:https://mrjob.readthedocs.io/en/latest/job.html