我目前正在用python为hadoop教程编写一些数据处理代码,遇到了一些我不太理解的问题。代码如下:
from mrjob.job import MRJob
class tutorial4(MRJob):
def mapper(self, _, line):
fields = line.split(',')
stockTotal = int(float(fields[6]) * float(fields[7]))
key = fields[1]
date = fields[2]
pair = (key, date, stockTotal)
yield(None, pair)
def reducer(self, _, pair):
pair = list(pair)
sortedValues = sorted(pair, reverse = True, key = pair[2])
yield(None, pair)
if __name__ == '__main__':
tutorial4.run()
我在这里遇到的问题是mapper对象中的yield关键字返回一个generator对象。我需要reducer对象中的一个列表,因此我尝试通过执行以下操作将Map器中的成对列表转换为一个列表:
pair = list(pair)
当我这样做并尝试运行它时,python返回一个“list object is not callable”错误。现在我看了这里和其他地方的一些其他答案,标准答案似乎是我在代码的其他地方使用列表,而不是python本身的内置列表对象,但我没有在这里这样做,无法找出哪里错了。有人能帮帮我吗?
暂无答案!
目前还没有任何答案,快来回答吧!