python-2.7 - MRJob 中没有 mapper() 的 reduce() 会做什么?

标签 python-2.7 hadoop mrjob

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

最佳答案

documentation说:

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/

相关文章:

python-2.7 - Pandas 与前一天的价格变化率差异

python - 从 Pipeline 调用 Spider 的方法 - Python Scrapy

apache-spark - 如何通过Spark运行HDFS文件系统命令?

hadoop - Hive 显示的行数少于 HBase

python - 有没有办法确定传递给 Hadoop/Dumbo/Mrjob 中的 map 作业的文件名?

python-2.7 - 如何识别 Python pandas Dataframe 中第一次出现的重复行

python - Python 中的 ln(自然对数)

java - Elastic Storm拓扑/Storm-Hadoop共存

python - Numpy 和 Scipy 与 Amazon Elastic MapReduce

hadoop - MRjob文档中的“The location specified by MRJOB_CONF”