如果mrjob中没有mapper(),reduce()做什么?

plicqrtu  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(292)

我是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()做什么呢?非常感谢!!

eqoofvh9

eqoofvh91#

文件上说:
类mrjob.step.mrstep(**kwargs)

Used by MRJob.steps. See Multi-step jobs for sample usage.

接受以下关键字参数。参数:

mapper – function with same function signature as mapper(), or None for an identity mapper.

这是一个习惯用法,map默认为identity,reduce为flatten。

相关问题