【发布时间】:2021-04-10 00:18:57
【问题描述】:
我一直在搞乱 MapReduce,对它还是很陌生,想知道是否可以就我无法回答的问题获得一些帮助: 我有一个日期和计数的 txt 文件,并希望根据它们各自的计数按升序对日期进行排序。文本文件如下所示:
我环顾四周,发现了一些这样的代码:
import re
从 mrjob.job 导入 MRJob 从 mrjob.step 导入 MRStep
WORD_RE = re.compile(r"[\w']+")
类 MRWordFrequencyCount(MRJob):
def steps(self):
return [
MRStep(
mapper=self.mapper_extract_words, combiner=self.combine_word_counts,
reducer=self.reducer_sum_word_counts
),
MRStep(
reducer=self.reduce_sort_counts
)
]
def mapper_extract_words(self, _, line):
for word in WORD_RE.findall(line):
yield word.lower(), 1
def combine_word_counts(self, word, counts):
yield word, sum(counts)
def reducer_sum_word_counts(self, key, values):
yield None, (sum(values), key)
def reduce_sort_counts(self, _, word_counts):
for count, key in sorted(word_counts, reverse=True):
yield ('%020d' % int(count), key)
但这似乎太复杂了,因为正如您从postedDates txt 文件中看到的那样,我已经有了密钥及其各自的计数。那么我是否只需要添加第二步,它只是一个使用“sorted(counts)”对键和值列表进行排序的 reducer 函数?
恭喜您的时间。
【问题讨论】: