Mapreduce实例(一):WordCount

本文介绍了在Linux环境下,使用MapReduce统计电商网站买家收藏商品数量的步骤。涉及内容包括启动Hadoop,创建输入目录,下载并上传数据文件,新建Java项目,编写Mapper和Reducer代码,以及运行MapReduce任务并查看结果。
摘要由CSDN通过智能技术生成

系统环境

Linux Ubuntu 16.0

jdk-7u75-linux-x64

hadoop-2.6.0-cdh5.4.5

hadoop-2.6.0-eclipse-cdh5.4.5.jar

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

任务内容

现有某电商网站用户对商品的收藏数据,记录了用户收藏的商品id以及收藏日期,名为buyer_favorite1。

buyer_favorite1包含:买家id,商品id,收藏日期这三个字段,数据以“\t”分割,样本数据及格式如下:

买家id   商品id    收藏日期
10181   1000481   2010-04-04 16:54:31
20001   1001597   2010-04-07 15:07:52
20001   1001560   2010-04-07 15:08:27
20042   1001368   2010-04-08 08:20:30
20067   1002061   2010-04-08 16:45:33
20056   1003289   2010-04-12 10:50:55
20056   1003290   2010-04-12 11:57:35
20056   1003292   2010-04-12 12:05:29
20054   1002420   2010-04-14 15:24:12
20055   1001679   2010-04-14 19:46:04
20054   1010675   2010-04-14 15:23:53
20054   1002429   2010-04-14 17:52:45
20076   1002427   2010-04-14 19:35:39
20054   1003326   2010-04-20 12:54:44
20056   1002420   2010-04-15 11:24:49
20064   1002422   2010-04-15 11:35:54
20056   1003066   2010-04-15 11:43:01
20056   1003055   2010-04-15 11:43:06
20056   1010183   2010-04-15 11:45:24
20056   1002422   2010-04-15 11:45:49
20056   1003100   2010-04-15 11:45:54
20056   1003094   2010-04-15 11:45:57
20056   1003064   2010-04-15 11:46:04
20056   1010178   2010-04-15 16:15:20
20076   1003101   2010-04-15 16:37:27
20076   1003103   2010-04-15 16:37:05
20076   1003100   2010-04-15 16:37:18
20076   1003066   2010-04-15 16:37:31
20054   1003103   2010-04-15 16:40:14
20054   1003100   2010-04-15 16:40:16

要求编写MapReduce程序,统计每个买家收藏商品数量。

统计结果数据如下:

买家id 商品数量
10181	1
20001	2
20042	1
20054	6
20055	1
20056	12
20064	1
20067	1
20076	5

任务步骤

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

cd /apps/hadoop/sbin  
./start-all.sh  

2.在linux上,创建一个目录/data/mapreduce1。

mkdir -p /data/mapreduce1  

3.切换到/data/mapreduce1目录下,使用wget命令从网址 http://192.168.1.100:60000/allfiles/mapreduce1/buyer_favorite1,下载文本文件buyer_favorite1。

cd /data/mapreduce1  
wget  http://192.168.1.100:60000/allfiles/mapreduce1/buyer_favorite1  

依然在/data/mapreduce1目录下,使用wget命令,从
http://192.168.1.100:60000/allfiles/mapreduce1/hadoop2lib.tar.gz,下载项目用到的依赖包。

wget  http://192.168.1.100:60000/allfiles/mapreduce1/hadoop2lib.tar.gz  

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

tar -xzvf hadoop2lib.tar.gz  

4.将linux本地/data/mapreduce1/buyer_favorite1,上传到HDFS上的/mymapreduce1/in目录下。若HDFS目录不存在,需提前创建。

hadoop fs -mkdir -p /mymapreduce1/in  
hadoop fs -put /data/mapreduce1/buyer_favorite1 /mymapreduce1/in  

5.打开Eclipse,新建Java Project项目,并将项目名设置为mapreduce1。
在这里插入图片描述
在这里插入图片描述
6.在项目名mapreduce1下,新建package包,在项目名mapreduce1下。
在这里插入图片描述
7.在创建的包mapreduce下,新建类,并将类命名为WordCount。
在这里插入图片描述
8.添加项目所需依赖的jar包,右键单击项目名,新建一个目录hadoop2lib,用于存放项目所需的jar包。
在这里插入图片描述
将linux上/data/mapreduce1目录下,hadoop2lib目录中的jar包,全部拷贝到eclipse中,mapreduce1项目的hadoop2lib目录下,选中hadoop2lib目录下所有的jar包,单击右键,选择Build Path=>Add to Build Path。
在这里插入图片描述
9.编写Java代码,并描述其设计思路。

下图描述了该mapreduce的执行过程
在这里插入图片描述
大致思路是将hdfs上的文本作为输入,MapReduce通过InputFormat会将文本进行切片处理,并将每行的首字母相对于文本文件的首地址的偏移量作为输入键值对的key,文本内容作为输入键值对的value,经过在map函数处理,输出中间结果<word,1>的形式,并在reduce函数中完成对每个单词的词频统计。整个程序代码主要包括两部分:Mapper部分和Reducer部分。

Mapper代码

public static class doMapper extends 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值