Python 中的映射缩减作业

问题描述 投票:0回答:1

enter image description here我有一个 csv,有 100 万行和 3 列,列是 PostAuthor、CommentAuthor、CommentDate。我想要这个示例输出: 帖子作者评论数 [(评论者,日期)(评论者,日期)(评论者,日期)()...]。我在 VM Oracle 上运行

我的输出与示例不同: "A-Jay" [457,[["Barkley","2022-01-20"],["Barkley","2022-01-20"],[ “巴克利”,“2022-01-20”]...等。日期总是一样的。

我的代码是这样的:

%%file task1.py
#!/usr/bin/env python3

from mrjob.job import MRJob

class Comments(MRJob):
    def mapper(self,_,line):
        columns=line.replace('"', '').split(",")
        PostAuthor= columns[0]
        CommentAuthor=columns[1]
        CommentDate=columns[2]
        yield PostAuthor,(1,(CommentAuthor,CommentDate))
        
    def reducer(self,PostAuthor,values):
        total_comments=0
        comment_list=[]
        for value in values:
            total_comments+=value[0]
            comment_list.append(value[1])
        sorted_comments=sorted(comment_list, key=lambda x: x[1], reverse=True)
        yield PostAuthor,(total_comments,sorted_comments)

if __name__=='__main__':
    Comments.run()
python mapreduce
1个回答
0
投票

MapReduce 是一种编程模型和处理技术,用于并行处理和生成大型数据集。在 Python 中,您可以使用 functools 模块中的映射和化简函数以及列表推导式和 lambda 函数等功能来实现 MapReduce 作业。

© www.soinside.com 2019 - 2024. All rights reserved.