一只蒸熟的虾子 2023-06-10 17:20 采纳率: 25%
浏览 9

关于#mapreduce#的问题,如何解决?


mapreduce+mysql+python分析豆瓣读书top250,还要画图,想问下python的逻辑代码怎么写,就比如,找出当前评价人数最多的前100的小说,并以国籍为指标绘制饼状图,逻辑代码类似于这样要连接数据库,还有个run.py的启动文件

img

 

  • 写回答

2条回答 默认 最新

  • IT论之程序员 2023-06-11 09:35
    关注
    
    这里是一个简单的思路:
    1. 连接MySQL数据库,查询出豆瓣读书top250的数据,包括书名、评分、评价人数、国籍等信息。
    2. 在Map阶段,将每本书的信息映射为((国籍, 书名), 评价人数)这样的键值对。
    3. 在Reduce阶段,对相同国籍的书进行评价人数的累加,得到((国籍, 总评价人数), [书名1, 书名2, ...])这样的结果。
    4. 对Reduce结果再进行排序,选出评价人数最多的前100本书。
    5. 根据国籍信息绘制饼图。
    python代码如下:
    python
    import mysql.connector
    from mrjob.job import MRJob
    
    class BookTop250(MRJob):
        def mapper(self, _, line):
            line = line.strip().split('\t')
            name, rating, votes, nationality = line[0], line[1], int(line[3]), line[6]
            yield (nationality, name), votes
    
        def reducer(self, key, values):
            total_votes = sum(values)
            book_names = [v for v in values]
            yield key, (total_votes, book_names)
    
    if __name__ == '__main__':
        # 连接MySQL,查询top250数据
        conn = mysql.connector.connect(host='localhost', user='root', password='password', database='douban')
        cursor = conn.cursor()
        cursor.execute('SELECT * FROM book_top250')
        rows = cursor.fetchall()
    
        # 写入本地数据文件
        with open('top250.txt', 'w') as f:
            for row in rows:
                f.write('\t'.join(row) + '\n')
        
        # 运行MapReduce作业           
        mr_job = BookTop250(args=['top250.txt'])
        with mr_job.make_runner() as runner:
            runner.run()
            for key, value in mr_job.parse_output(runner.cat_output()):  
                # 这里对结果进行处理和绘制饼图
    这是一个简单的思路,希望对您有所帮助。如果有任何问题,欢迎交流。
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月10日

悬赏问题

  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?