使用 mrjob 的文本文件中的前十个值

Top Ten Values from a text file using mrjob

我正在尝试获取文件中的前 10 项。该文件是一个文本文件。该文件看起来像这样:

10000
10001
10002
10003
10004
10005
10090
10011
10060
10050
10040
11000
20000

这是我尝试过的方法,但它一直给我一个错误:

from mrjob.job import MRJob

class MRWordCount(MRJob):
    
  def mapper(self,_,lines):
    for number in lines.split(','):
      yield None, number
  def reducer(self,key, numbers): 
    self.alist = []
    for number in numbers:
      self.alist.append(number)
    self.topten = []
    for i in range(10):
      self.topten.append(max(self.topten))
      self.alist.remove(max(self.alist))
    for i in range(10):
      yield self.topten[i]


if __name__ == '__main__':
    MRWordCount.run()

我得到的错误是:

ValueError: too many values to unpack (expected 2)

我想要做的只是对这个文件中的这些值进行排序,然后输出文件中从高到低排序的前十个数字。任何人都知道我将如何使用 mrjob 执行此操作或知道如何解决我遇到的错误?需要说明的是,我并不是要获取文件本身中最常出现的值,而只是文件本身中的前十个值。

from mrjob.job import MRJob


class Top10Integers(MRJob):
    def mapper(self, key, line):
        for integer in line.split():  
            yield None, int(integer) 

    def reducer(self, key, values):
        integers = list(values)
        integers.sort(reverse=True)

        integers = integers[:10]
        for integer in integers:
            yield None, integer


if __name__ == '__main__':
    Top10Integers.run()