如何在mapreduce中找到前10个元素

wr98u20j  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(302)

我试图在一些数据集上编写pythonmapreduce作业,我必须找到某些统计数据。这是输入数据及其形式的示例:

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个元素。有人能帮帮我吗?

bhmjp9jg

bhmjp9jg1#

让这成为一个多步骤的工作。第一步的最终结果是每天交易的总金额。第二个获取总数,对其排序,并返回前10名。

相关问题