Python使用MapReduce编程模型统计销量
目录
1、生成模拟数据2、mapper实现3、reducer实现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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?