Python使用MapReduce进行简单的销售统计


Posted in Python onApril 22, 2022

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

Python使用MapReduce进行简单的销售统计

下面就通过手动实现MapReduce编码统计销售数量的例子来模拟。

打开Python3在线编程网址:

http://www.dooccn.com/python3/

1、生成模拟数据

#!/usr/bin/python
# -*- coding: utf-8 -*-
import random
# 模拟商品
stocks = ["HUAWEI Mate40","Apple iphone13","Apple MacBook Pro 14","ThinkBook 14p","RedmiBook Pro14","飞鹤星飞帆幼儿奶粉","爱他美 幼儿奶粉","李宁运动男卫裤","小米踏步机椭圆机","欧莱雅面膜","御泥坊面膜","欧莱雅男士套装","金六福白酒","牛栏山42度","茅台飞天"]
# 销售订单
sales_list = list()
# 生成100个买家订单,每个订单三个商品
for i in range(100):
    sstocks = list()
    for j in range(3):
        sstocks.append(stocks[random.randint(0,14)])
    a = "买家" + str(i+1) + ":" + ",".join(sstocks)
    print(a)

Python使用MapReduce进行简单的销售统计

2、mapper实现

将第一步的结果作为第二步的输入。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
#从控制台中读取数据,循环发送每行数据
for line in sys.stdin:
    #对订单进行拆分
    orders = line.strip().split(":")
    if len(orders) == 2:
        #对订单中的商品进行拆分
        stocks = orders[1].split(",")
        for stock in stocks:
            #将每一个商品作为key,value进行输出
            print('%s,%s' % (stock,1))

Python使用MapReduce进行简单的销售统计

3、reducer实现

将第二步的结果作为第三步的输入。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
# 创建一个空的字典用来每一个商品的销售数据
stock_dict = dict()
for line in sys.stdin:
    if len(line.strip()) >= 1:
        # 拆分每一行的商品,销量
        stock, sales = line.split(',')
        # 判断当前商品是否在字典中有存放
        if stock in stock_dict:
            # 如果有,把字典中的商品和销量取出来,追加当前销量再放入
            stock_dict[stock] = stock_dict[stock] + int(sales)
        else:
            # 如果没有,直接把商品和销量数据放入字典中
            stock_dict[stock] = int(sales)
# 遍历字典列表,获取每一个商品的销量
for stock, sales in stock_dict.items():
    print('%s\t%s' % (stock, sales))

Python使用MapReduce进行简单的销售统计 

这样就实现了简单的销售统计。

到此这篇关于Python使用MapReduce编程模型统计销量的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
python 实现堆排序算法代码
Jun 05 Python
python中字典(Dictionary)用法实例详解
May 30 Python
python奇偶行分开存储实现代码
Mar 19 Python
python去除扩展名的实例讲解
Apr 23 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 Python
Django之富文本(获取内容,设置内容方式)
May 21 Python
python 3.8.3 安装配置图文教程
May 21 Python
python 爬取小说并下载的示例
Dec 07 Python
聊聊python在linux下与windows下导入模块的区别说明
Mar 03 Python
python使用pycharm安装pyqt5以及相关配置
Python使用DFA算法过滤内容敏感词
python游戏开发之pygame实现接球小游戏
Apr 22 #Python
python游戏开发Pygame框架
Apr 22 #Python
python中的random模块和相关函数详解
Apr 22 #Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 #Python
微信小程序调用python模型
Apr 21 #Python
You might like
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
destoon官方标签大全
2014/06/20 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
vue获取DOM元素并设置属性的两种实现方法
2017/09/30 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
Python下singleton模式的实现方法
2014/07/16 Python
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
英语专业毕业生自荐信
2013/10/28 职场文书
医科大学生毕业的自我评价分享
2013/11/12 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
政风行风建设整改方案
2014/10/27 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
邀请函怎么写
2015/01/30 职场文书
旗帜观后感
2015/06/08 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
会计入职心得体会
2016/01/22 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android