【发布时间】:2022-01-05 20:21:58
【问题描述】:
我正在尝试在 python 中编写一个 map-reduce 函数。
我有一个包含产品信息的文件,我想计算属于同一类别并具有相同版本的产品的数量。像这样:<category, {count, version} >
我的文件信息如下:
product_name rate category id version
a "3.0" cat1 1 1
b "2.0" cat1 2 1
c "4.0" cat1 3 4
d "1.0" cat2 3 2
. . . . .
. . . . .
. . . . .
例如:
<cat1, {2, 1} >
我写了这段代码,但在组合函数中我不知道如何计算它们。
from mrjob.job import MRJob
from mrjob.step import MRStep
class MRFrequencyCount(MRJob):
def steps(self):
return [
MRStep(
mapper=self.mapper_extract_words,
combiner=self.combine_word_counts,
)
]
def mapper_extract(self, _, line):
(product_name, rate, category, id, version) = line.split('*')
yield category, (1, version)
def combine_counts(self, category, countAndVersion):
yield category, sum(countAndVersion)
if __name__ == '__main__':
MRFrequencyCount.run()
【问题讨论】:
标签: python mapreduce bigdata mrjob word-frequency