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

实验 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网址上下载项目用到的依赖包。![](https://file.jishuzhan.net/article/1776925285787111426/87582c01a229ee6bee36155defab18a1.webp)

将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

|---|---------------------------------------------------------------------------------------------------|
| |
| | |

运行查看结果

|---|---------------------------------------------------------------------------------------------------|
| |
| | |

实验 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目录已存在已有内容,需要进行删除再运行。

|---|---------------------------------------------------------------------------------------------------|
| |
| | |

相关推荐
永洪科技7 小时前
永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
大数据·人工智能·科技·数据分析·数据可视化·bi
weixin_307779137 小时前
Hive集群之间迁移的Linux Shell脚本
大数据·linux·hive·bash·迁移学习
上海锝秉工控10 小时前
防爆拉线位移传感器:工业安全的“隐形守护者”
大数据·人工智能·安全
cv高级工程师YKY11 小时前
SRE - - PV、UV、VV、IP详解及区别
大数据·服务器·uv
bxlj_jcj12 小时前
深入Flink核心概念:解锁大数据流处理的奥秘
大数据·flink
云资源服务商12 小时前
阿里云Flink:开启大数据实时处理新时代
大数据·阿里云·云计算
Aurora_NeAr13 小时前
Spark SQL架构及高级用法
大数据·后端·spark
王小王-12313 小时前
基于Hadoop的公共自行车数据分布式存储和计算平台的设计与实现
大数据·hive·hadoop·分布式·hadoop公共自行车·共享单车大数据分析·hadoop共享单车
数据与人工智能律师13 小时前
数字资产革命中的信任之锚:RWA法律架构的隐形密码
大数据·网络·人工智能·云计算·区块链
Edingbrugh.南空14 小时前
Flink OceanBase CDC 环境配置与验证
大数据·flink·oceanbase