0
私はMapReduceの新版です。私は非常に簡単な質問があります。私はWordCountの問題を解決し、問題をテキストの上位Nレコードとして変更したいと考えています。私はテキスト上のすべての単語を並べ替えるが、私は最後のN値を取ることはできません。まず、テキストを読んで、各単語をレデューサーに1で送信し、レデューサーはそれぞれの単語ごとに番号を探します。それから私は単語の出現に従ってこれらの単語をソートしようとしました。しかし、私はトップNは、私は次のコードを使用して問題を解決しトップNレコードMapReduce on Python
from mrjob.job import MRJob
from mrjob.step import MRStep
from stemming.porter2 import stem
class MRWordCount(MRJob):
def steps(self):
return [
MRStep(mapper=self.mapper,
reducer=self.reducer),
MRStep(mapper=self.secondmapper,
reducer = self.secondreducer)
]
def mapper(self,_,lines):
words = lines.strip().split()
for w in words:
yield stem(w.lower()),1
def reducer(self, key, values):
yield key, (sum(values))
def secondmapper(self, key,value):
yield '%04d'%int(value), key
def secondreducer(self, key, values):
for v in values:
yield v,key
if __name__ == '__main__':
MRWordCount.run()