【大数据存储】实验五:Mapreduce

news2025/4/13 21:52:59

实验Mapreduce实例——排序(补充程序)

实验环境

Linux Ubuntu 16.04

jdk-8u191-linux-x64

hadoop-3.0.0

hadoop-eclipse-plugin-2.7.3.jar 

eclipse-java-juno-SR2-linux-gtk-x86_64

实验内容

在电商网站上,当我们进入某电商页面里浏览商品时,就会产生用户对商品访问情况的数据 ,名为goods_visit1,goods_visit1中包含(商品id ,点击次数)两个字段,内容以“\t”分割,由于数据量很大,所以为了方便统计我们只截取它的一部分数据,内容如下:

  1. 商品id  点击次数  
  2. 1010037 100  
  3. 1010102 100  
  4. 1010152 97  
  5. 1010178 96  
  6. 1010280 104  
  7. 1010320 103  
  8. 1010510 104  
  9. 1010603 96  
  10. 1010637 97  
要求我们编写mapreduce程序来对商品点击次数有低到高进行排序。
实验步骤

1.切换到/apps/hadoop/sbin目录下,开启Hadoop。

2.在Linux本地新建/data/mapreduce3目录。

  1. 在Linux中切换到/data/mapreduce3目录下,用wget命令从http://10.2.208.188:60000/allfiles/mapreduce3/goods_visit1网址上下载文本文件goods_visit1。

然后在当前目录下用wget命令从http://10.2.208.188:60000/allfiles/mapreduce3/hadoop2lib.tar.gz网址上下载项目用到的依赖包。

将hadoop2lib.tar.gz解压到当前目录下


首先在HDFS上新建/mymapreduce3/in目录,然后将Linux本地/data/mapreduce3目录下的goods_visit1文件导入到HDFS的/mymapreduce3/in目录中。

  1. 项目jar包等已就绪

6.填充

Map

num.set(Integer.parseInt(arr[1]));num为获取的第一列,并且设置为整形

goods.set(arr[θ]);Goods为商品名,是获取的第零列

context.write(num,goods);写入设置数量为key,商品名为value,因为后续要按照数量key排序

Reduce

就直接填写key value就好

Main

写入路径为hdfs路径下所创的数据goods_visit1,输出路径也要记得改成相应创造的mapreduce3工作目录下的out

运行查看结果

7.

实验Mapreduce实例——平均数(补充程序)

实验环境

Linux Ubuntu 16.04

jdk-8u191-linux-x64

hadoop-3.0.0

hadoop-eclipse-plugin-2.7.3.jar 

eclipse-java-juno-SR2-linux-gtk-x86_64

实验内容

现有某电商关于商品点击情况的数据文件,表名为goods_click,包含两个字段(商品分类,商品点击次数),分隔符“\t”,由于数据很大,所以为了方便统计我们只截取它的一部分数据,内容如下:

商品分类 商品点击次数  

  1. 52127   5  
  2. 52120   93  
  3. 52092   93  
  4. 52132   38  
  5. 52006   462  
  6. 52109   28  
  7. 52109   43  
  8. 52132   0  
  9. 52132   34  
  10. 52132   9  
  11. 52132   30  
  12. 52132   45  
  13. 52132   24  
  14. 52009   2615  
  15. 52132   25  
  16. 52090   13  
  17. 52132   6  
  18. 52136   0  
  19. 52090   10  
  20. 52024   347  
要求使用mapreduce统计出每类商品的平均点击次数
实验步骤

1.切换到/apps/hadoop/sbin目录下,开启Hadoop。

2.在Linux本地新建/data/mapreduce4目录。

  1. 在Linux中切换到/data/mapreduce4目录下,用wget命令从http://10.2.208.188:60000/allfiles/mapreduce4/goods_click网址上下载文本文件goods_click。

然后在当前目录下用wget命令从http://10.2.208.188:60000/allfiles/mapreduce3/hadoop2lib.tar.gz网址上下载项目用到的依赖包。

将hadoop2lib.tar.gz解压到当前目录下

  1. 首先在HDFS上新建/mymapreduce3/in目录,然后将Linux本地/data/mapreduce3目录下的goods_visit1文件导入到HDFS的/mymapreduce3/in目录中。

  1. 项目jar包等已就绪

  1. 填充语句

Map

String line=value.toString();保证数据都是string型

String arr[]=line.split("\t");按\t拆分

newkey.set(arr[0]);设置第一列为key,即商品类别为key

Intwritable num=new Intwritable();新建可写入的整型,便于后续记录次数的

num.set(Integer.parseInt(arr[1]));设置第一列为values,即点击次数context.write(newKey,num);

REDUCE

使用val.get()数值加入n中即总次数,然后除以个数,得到均值

新建一个工作任务,使用map和reduce等类,值得注意的是输出的key为商品类别,是text类型,而输出平均值是可写的整型,然后写入路径为hdfs路径下所创的数据goods_click,输出路径也要记得改成相应创造的mapreduce工作目录下的out

运行查看结果

遇到的困难和解决方法:

如图所示输出的key和value写反导致不输出内容并再次运行会报错out目录已存在已有内容,需要进行删除再运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1582451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小户型装修攻略:8个省空间的布局技巧分享!福州中宅装饰,福州装修

以下是8种小户型空间布局方案分享: 1. 功能分区 将房间划分为不同的功能区域,如休息区、工作区、存储区等。可以使用家具、地毯或窗帘等来划分区域,这样可以让空间看起来更加有组织和有序。 2. 卧室和客厅一体化 对于小户型来说&#xff0…

ubuntu系统安装k8s1.28精简步骤

目录 一、规划二、环境准备2.1 配置apt仓库配置系统基本软件仓库配置k8s软件仓库安装常用软件包 2.2 修改静态ip、ntp时间同步、主机名、hosts文件、主机免密2.3 内核配置2.4 关闭防火墙、selinux、swap2.5 安装软件安装docker安装containerd安装k8s软件包 三、安装配置k8s3.1 …

浏览器工作原理与实践--虚拟DOM:虚拟DOM和实际的DOM有何不同

虚拟DOM是最近非常火的技术,两大著名前端框架React和Vue都使用了虚拟DOM,所以我觉得非常有必要结合浏览器的工作机制对虚拟DOM进行一次分析。当然了,React和Vue框架本身所蕴含的知识点非常多,而且也不是我们专栏的重点&#xff0c…

QT:信号与槽

作业: 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和…

SpringCloud的使用以及五大核心组件

一、SpringCloud介绍 微服务架构的提出者:马丁福勒 https://martinfowler.com/articles/microservices.html // 微服务架构的提出者:马丁福勒(中午网) http://blog.cuicc.com/blog/2015/07/22/microservices/ 马丁.福勒对微服务…

手写简易操作系统(二十八)--实现简单shell

前情提要 Shell是计算机操作系统中的一个重要概念,它是用户与操作系统内核之间的接口。Shell接受用户的命令,并将其转换为操作系统能够理解的指令,然后执行这些指令,并将执行结果返回给用户。 Shell可以理解为一个命令解释器&am…

全面的网络流量监控

流量监控指的是对数据流进行的监控,通常包括出数据、入数据的速度、总流量。通过网络流量监控,组织可以确保只有业务关键型流量通过网络传输,并限制不需要的网络流量,从而提高网络效率,又可以防止停机、减少 MTTR、帮助…

OSPF防环文档

OPSF在区域内会产生俩类LSA:Router LSA ,Network LSA 路由器以自己为树根构建最短路径树 ,这里的最短路径树按两步形 成,第一步,仅考虑路由器和传输网络之间的连接。通过 Dijkstra 算法,根据链路状态数据…

FebHost:瑞士.CH域名注册介绍

瑞士,一个位于欧洲心脏地带的多元文化国家,不仅以其精准的钟表和迷人的巧克力闻名于世,还因其独特的国家代码顶级域名“.ch”在互联网上占有一席之地。与全球广泛使用的通用顶级域名(gTLDs)如“.com”、“.org”或“.n…

sqli-labs(宽字节less-33,二次less-24,update less-17,堆叠less-38)pikachu(insert,delete)

目录 宽字节 less-33 具体使用 sqlmap爆破宽字节 二次注入 less-24 靶场运用: update注入 less-17 具体使用: insert注入 pikachu演示 具体使用 delete注入 pikachu演示 堆叠注入 less-38 宽字节 less-33 宽字节注入是利用 mysql 的一个特性&…

访问elasticsearch集群提示ERROR 新增es数据失败,后台日志返回413 Request Entity Too Larg

一、背景: 在运维paas云平台时有研发反馈客户端访问elasticsearch服务偶发性的出现报错,提示报错如下: ERROR 1 --- [io-8407-exec-35] c.j.b.c.c.e.s.ElasticOperateServiceImpl : 新增es数据失败 二、问题分析: 报错日志内容核…

【Machine Learning系列】带你快速学习十大机器学习算法

前言 机器学习算法是一类用于从数据中学习模式和规律的算法。这些算法可以通过训练样本的输入和输出来推断出模型的参数,然后用于预测新的未知数据。 文章目录 前言机器学习算法1. 线性回归算法 Linear Regression2. 支持向量机算法(Support Vector Machine,SVM)3. …

实战-edusrc漏洞挖掘-接口未授权访问

0x01系统初探 通过fofa对大学进行搜索 fofa:host"edu.cn" && status_code"200"在随意的翻阅查看时,发现访问xxx.edu.cn登录页面会优先访问登录后的页面,再跳转至登录页面。盲猜应该是前端校验,可以通过…

Netty 入门应用之Http服务WebSocket

Netty实现Http服务 主要的变化是在初始化器中引入了新的编解码器 一些创建的类作用和Netty HelloWorld的小demo一样我这里就不再次重复了 1、Http服务端代码 public class HttpServer {public static void main(String[] args) {// 创建Reactor// 用来管理channel 监听事件 …

氮气柜温湿度含氧量控制及联网监测功能介绍

氮气柜主要用于存储对氧气敏感的物料,如精密电子元器件、金属材料、化学品、药品、IC芯片等。通过持续充入氮气,降低柜内氧气含量至安全水平,从而抑制氧化反应的发生,保护物料免受氧化损害。 氮气柜可以通过氧浓度传感器来实现对柜…

【TI毫米波雷达】MMWave SDK:UART串口数据发送时的数据丢失、出错及避坑配置,Polling方法和Write方法的使用避坑

【TI毫米波雷达】MMWave SDK:UART串口数据发送时的数据丢失、出错及避坑配置,Polling方法和Write方法的使用避坑 文章目录 BUG复现Polling方法和Write方法的使用避坑串口配置避坑附录:结构框架雷达基本原理叙述雷达天线排列位置芯片框架Demo工…

手术麻醉信息管理系统源码 网格编辑、麻醉质控指标

目录 什么是手术麻醉信息管理系统 满足医院等级评级需求 满足电子病历评级需求 满足科室需求 术前 1、患者术前评估/诊断 2、术前讨论制定手术方案 3、手术准备 4、术前准备 术中 1、送手术室 2、麻醉前 3、手术 术后 1、手术结束 2、术后监护 3、术后随访 什…

龙蜥社区「人人都可以参与开源」——体验开源成为“开源人“

龙蜥社区「人人都可以参与开源」体验开源——让更多的人了解开源! 龙蜥社区开源概述:龙蜥社区开源的探索过程:龙蜥社区收获总结:AtomGit评测:服务设计上:功能结构上:安全设计上: AtomGit测评总结: 龙蜥社区开源概述: 在追求技术的路上少不了…

Netty学习——高级篇2 Netty解码技术 备份

接上篇:Netty学习——高级篇1 拆包 、粘包与编解码技术,本章继续介绍Netty的其他解码器 1 DelimiterBasedFrameDecoder分隔符解码器 DelimiterBasedFrameDecoder 分隔符解码器是按照指定分隔符进行解码的解码器,通过分隔符可以将二进制流拆分…

将扁平数据转换为树形数据的方法

当遇到了好多扁平数据我们都无从下手?不知道如何处理? 家人们 无脑调用这个函数就好了 接口请求回来以后 调用这个函数传入实参就可以用啦~ // 树形菜单函数 function GetTreeData(data) {let TreeData [];let map new Map(); //存在id,对应所在的内…