【大数据课程】高途课程实践-Day01:Python编写Map Reduce函数实现各商品销售量展示(类似wordcount)
〇、概述
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 # 数据的输出目录
【大数据课程】高途课程实践-Day01:Python编写Map Reduce函数实现各商品销售量展示(类似wordcount)的更多相关文章
- MySQL在大数据、高并发场景下的SQL语句优化和"最佳实践"
本文主要针对中小型应用或网站,重点探讨日常程序开发中SQL语句的优化问题,所谓“大数据”.“高并发”仅针对中小型应用而言,专业的数据库运维大神请无视.以下实践为个人在实际开发工作中,针对相对“大数据” ...
- WOT干货大放送:大数据架构发展趋势及探索实践分享
WOT大数据处理技术分会场,PingCAP CTO黄东旭.易观智库CTO郭炜.Mob开发者服务平台技术副总监林荣波.宜信技术研发中心高级架构师王东及商助科技(99Click)顾问总监郑泉五位讲师, ...
- 大数据量高并发的数据库优化详解(MSSQL)
转载自:http://www.jb51.net/article/71041.htm 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能. ...
- 网易大数据平台的Spark技术实践
网易大数据平台的Spark技术实践 作者 王健宗 网易的实时计算需求 对于大多数的大数据而言,实时性是其所应具备的重要属性,信息的到达和获取应满足实时性的要求,而信息的价值需在其到达那刻展现才能利益最 ...
- (数据科学学习手札80)用Python编写小工具下载OSM路网数据
本文对应脚本已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们平时在数据可视化或空间数据分析的过程中经常会 ...
- 王家林的81门一站式云计算分布式大数据&移动互联网解决方案课程第14门课程:Android软硬整合设计与框架揭秘: HAL&Framework &Native Service &App&HTML5架构设计与实战开发
掌握Android从底层开发到框架整合技术到上层App开发及HTML5的全部技术: 一次彻底的Android架构.思想和实战技术的洗礼: 彻底掌握Andorid HAL.Android Runtime ...
- IT大数据服务管理高级课程(IT服务,大数据,云计算,智能城市)
个人简历 金石先生是马克思主义中国化的研究学者,上海财经大学经济学和管理学硕士,中国民主建国会成员,中国特色社会主义人文科技管理哲学的理论奠基人之一.金石先生博学多才,对问题有独到见解.专于工作且乐于 ...
- 大数据系列修炼-Scala课程01
简介 由于本人刚毕业,也是从事软件开发相关的工作.想再学习一下关于大数据.移动互联网.云计算相关的技术.为我的未来打好基础.并且从零开始学习大数据相关的知识,脚踏实地的走好每一步,听行业前辈说毕业生刚 ...
- 大数据系列修炼-Scala课程03
前言 今天上班看了很多关于前端js,jQuery.bootstrap.js以及springMVC看得迷迷糊糊的,毕竟以前很少去学习前端的技术,所有看得有点困,还好看得比较多,回家后也开始学习关于Sca ...
- 大数据系列修炼-Scala课程07
由于昨天下班后有点困,就没有来及写博客,今天会把它补上!把这个习惯坚持下去! 关于Scala高阶函数详解 1.Scala高阶函数代码实现:高阶函数就是在我们函数中套用函数 2.高阶函数代码详解:高阶函 ...
随机推荐
- Django 之视图层
JsonResponse 1 json格式的数据有什么用 前后端数据交互需要使用json作为过渡,实现跨语言传输数据 2 前后端方法对应 JSON.stringify() - json.dumps( ...
- Job for redis-server.service failed because the control process exited with error code(Centos 7 设置Redis开机自启报错)
报错信息如下: Job for redis-server.service failed because the control process exited with error code. See ...
- 2.Python环境搭建
Python是一个跨平台.可移植的编程语言,因此可在windows.linux/unix和Mac os x系统中安装使用.安装完成后,你会得到Python解释器环境,一个命令行交互环境,一个简单的集成 ...
- 5.第四篇 Etcd存储组件高可用部署
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483792&idx=1&sn=b991443c ...
- centos7安装sonarqube-9.2.4
官方文档地址:https://docs.sonarqube.org/latest/requirements/requirements/ 使用 sonarqube 对 java 项目代码进行扫描的时候, ...
- k8s中安装rabbitmq集群
官方文档地址:https://www.rabbitmq.com/kubernetes/operator/quickstart-operator.html 要求 1.k8s版本要1.18及其以上 2.能 ...
- Mysql 数据库SQL脚本导入
1.进入mysql命令行窗口 mysql -uroot -p123456 2.展示所有数据库 show databases: 3.选择数据库 use 数据库名 4.展示选择的数据库中所有表 show ...
- 微信小程序分享好友,朋友圈
<template> <view> <button open-type="share">发送给好友</button> </vi ...
- cifar-10-dataset
import cv2 import numpy as np import os import pickle data_dir = os.path.join("data", &quo ...
- Goland Socket 服务
客户端发送消息 并接收服务端消息 package main import ( "fmt" "net" ) func main() { // conn, err ...