〇、概述

1、工具

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

在线运行Python代码

2、步骤

(1)⽣成代码测试数据

(2)编写Mapper逻辑

(3)编写Reducer逻辑

(4)提交并执行

一、⽣成代码测试数据

运行代码,输出50个人,分别购买3种商品的数据

代码:

#!/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() for i in range(50):
sstocks = list()
for j in range(3):
sstocks.append(stocks[random.randint(0,14)])
a = "买家" + str(i) + ":" + ",".join(sstocks)
print(a)

二、编写Mapper逻辑

拷⻉第1步1.2 ⽣成的数据到输⼊框中,然后参考mapper.py代码进⾏编辑程序

代码:

#!/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))

三、编写Reducer逻辑

拷⻉第2步⽣成的数据到输⼊框中,然后参考reducer.py代码进⾏编辑程序

代码:

#!/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))

最终结果:各个商品的购买次数

四、提交并执行

# hadoop jar 使用hadoop命令调用jar资源
# 运行streaming程序所在的资源位置(路径)
hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.6.5.jar
-file mapper.py # 表示mapper程序所在位置
-mapper "python mapper.py" # 表示将要调用的map执行程序脚本
-file reduce.py # 表示reducer程序所在位置
-reducer "python reducer.py" # 表示将要调用的reduce执行程序脚本
-input /input/data # 数据的输入目录
-output /output # 数据的输出目录

最新文章

  1. 《玩转D语言系列》三、轻松大跃进,把它当C语言先用起来
  2. JDK动态代理和CGLIB的区别
  3. ios 项目引用全局pch文件
  4. Atitit.javascript 实现类的方式原理大总结
  5. HDFS主要特性和体系结构
  6. C#的浅拷贝和深拷贝
  7. Candy Sharing Game(hdoj1034)
  8. Ctrl-A全选
  9. java_软件发布版本_Asynch HttpClien 对比发行版本说明_Alpha、Beta、RC、GA版本的区别
  10. Redis基本数据结构总结之STRING和LIST
  11. Centos 7 ip查看问题
  12. Linux - grep的一些进阶选项
  13. ID3、C4.5、CART决策树介绍
  14. Listener(1)—基础知识
  15. Centos 7内核3升级到4
  16. python中的__str__()函数
  17. printf的执行顺序
  18. file_name[:-4]
  19. 微软BI 之SSRS 系列 - 报表中分组聚合中处理不规则层次结构的技巧(没有子元素的时候不展开, 删除+符号)
  20. C# byte[]保存成文件

热门文章

  1. Idea插件SequenceDiagram快速查看方法调用
  2. jumpserver堡垒机版本升级,从2.14.2升级到2.16.3
  3. 使用nginx代理nexus,不是/根路径
  4. 企业信息化建PLM系统、ERP系统、MES系统是单个逐步建设好,还是同时上比较好?
  5. docker搭建个人云盘可道云kodbox
  6. Kafka之安装
  7. 齐博x1如何开启自定义标签模板功能
  8. QML 怎么调用 C++ 中的内容?
  9. ahk精简自用
  10. 【lwip】07-链路层收发以太网数据帧源码分析