Python使用MapReduce编程模型统计销量

 更新时间:2022年04月22日 09:04:28   作者:SAP剑客  
MapReduce是面向大数据并行处理的计算模型、框架和平台,是一种计算引擎,可以把我们对大批量数据的计算通过抽象成map与reduce两个子任务进行计算从而更快的得到想要的结果

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

下面就通过手动实现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)

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))

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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Python实现自动装机功能案例分析

    Python实现自动装机功能案例分析

    这篇文章主要介绍了Python实现自动装机功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 使用 Python 破解压缩文件的密码的思路详解

    使用 Python 破解压缩文件的密码的思路详解

    这篇文章主要介绍了使用 Python 破解压缩文件的密码的思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 使用Python实现合并多个Excel文件

    使用Python实现合并多个Excel文件

    合并Excel可以将多个文件中的数据合并到一个文件中,这样可以帮助我们更好地汇总和管理数据,本文主要介绍了如何使用第三方Python库 Spire.XLS for Python 实现以上两种合并Excel文件的需求,有需要的可以了解下
    2023-12-12
  • Django 实现外键去除自动添加的后缀‘_id’

    Django 实现外键去除自动添加的后缀‘_id’

    今天小编就为大家分享一篇Django 实现外键去除自动添加的后缀‘_id’,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python通过get,post方式发送http请求和接收http响应的方法

    python通过get,post方式发送http请求和接收http响应的方法

    这篇文章主要介绍了python通过get,post方式发送http请求和接收http响应的方法,涉及Python使用urllib模块与urllib2模块实现get与post发送数据的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 浅析Python 条件控制语句

    浅析Python 条件控制语句

    这篇文章主要介绍了Python 条件控制语句的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • python中similarity函数实例用法

    python中similarity函数实例用法

    在本篇文章里小编给大家整理的是一篇关于python中similarity函数实例用法,有兴趣的朋友们可以跟着学习下。
    2021-10-10
  • Python树的平衡检测算法实现

    Python树的平衡检测算法实现

    树的平衡检测是指判断一棵树是否为平衡二叉树,即每个节点的左右子树高度差不超过1,本文主要介绍了Python树的平衡检测算法实现,感兴趣的可以了解一下
    2023-11-11
  • python opencv图像处理基本操作示例详解

    python opencv图像处理基本操作示例详解

    这篇文章主要为大家介绍了python opencv图像处理的基本操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • python程序实现BTC(比特币)挖矿的完整代码

    python程序实现BTC(比特币)挖矿的完整代码

    这篇文章主要介绍了python程序实现BTC(比特币)挖矿的完整代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论