如何在MapReduce中查找前10个元素

时间:2018-11-01 18:34:28

标签: python algorithm sorting hadoop mapreduce

我试图在一些必须查找某些统计信息的数据集上编写Python MapReduce作业。这是输入数据及其输入格式的示例:

exchange, stock_symbol, date, stock_price_open,stock_price_high,stock_price_low, stock_price_close, stock_volume,stock_price_adj_close.

我需要使用以下找到的交易量最高的前10天:stock_price_close * stock_volume

这是我现在拥有的代码:

from mrjob.job import MRJob

class MapReduce(MRJob):

    def mapper(self, _, line):
        values = line.split(',')
        amount = int(float(values[6]) * float(values[7]))
        code = values[1]
        date = values[2]
        list = (code, date, amount)
        yield(None, list)

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

但是,我在为此任务实现Reducer方法时遇到了麻烦,并且不确定Reducer如何工作并仅找到前10个元素。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

完成一项multi-step工作。第一步的最终结果是每天交易的总金额。第二个获取总数,对它们进行排序,然后返回前10个。