我目前正在用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对象中的一个列表,因此我尝试通过执行以下操作将映射器中的成对列表转换为一个列表:
pair = list(pair)
当我这样做并尝试运行它时,Python返回一个“List Object is not callable”错误。现在我看了这里和其他地方的一些其他答案,标准答案似乎是我在代码的其他地方使用列表,而不是Python本身的内置列表对象,但我没有在这里这样做,无法找出哪里错了。有人能帮帮我吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐