我是 python 的新手,正在尝试按照说明 http://www.yekeren.com/blog/archives/1005 构建推荐系统,
让我困惑的是:
def reducer3_init(self):
self.pop = { }
file = open(self.options.item_pop, "r")
for line in file.readlines():
movieid_jstr, pop_jstr = line.strip().split("\t")
movieid = json.loads(movieid_jstr)
pop = json.loads(pop_jstr)
self.pop[movieid] = pop
file.close()
def reducer3(self, key, values):
yield key, sum(values) / math.sqrt(self.pop[key[0]] * self.pop[key[1]])
reduce3
没有对应的mapper
,它是如何执行的? json.load() 是做什么的?
非常感谢!!
最佳答案
class mrjob.step.MRStep(**kwargs)
Used by MRJob.steps. See Multi-step jobs for sample usage.
Accepts the following keyword arguments. Parameters:
mapper – function with same function signature as mapper(), or None for an identity mapper.
这是一个成语,将默认值映射到身份并减少到扁平化。
关于python-2.7 - MRJob 中没有 mapper() 的 reduce() 会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29874992/