Java实现单词统计

原文链接:

https://www.toutiao.com/i6764296608705151496/

单词统计的是统计一个文件中单词出现的次数,比如下面的数据源

mapreduce单词统计理解核心思想

 

其中,最终出现的次数结果应该是下面的显示

mapreduce单词统计理解核心思想

 

那么在MapReduce中该如何编写代码并出现最终结果?

首先我们把文件上传到HDFS中(hdfs dfs –put …)

数据名称:data.txt,大小是size是2G

红黄绿三个块表示的是数据存放的块

mapreduce单词统计理解核心思想

 

然后数据data.txt进入map阶段,会以<K,V>(KV对)的形式进入,K表示的是:每行首字母相对于文件头的字节偏移量,V表示的是每一行的文本。

mapreduce单词统计理解核心思想

 

那么我可以用图表示:蓝色的椭圆球表示一个map,红黄绿数据块在进入map阶段的时候,数据的形式为左边红色的<K,V>(KV对)的形式

mapreduce单词统计理解核心思想

 

经过map处理,比如String.split(""),做一次处理,数据会在不同的红黄绿数据块中变为下面的KV形式

mapreduce单词统计理解核心思想

 

mapreduce单词统计理解核心思想

 

我们在配置Hadoop的时候或设置reduce的数量,假如有两个reduce

Map执行完的数据会放到对应的reduce中,如下图

mapreduce单词统计理解核心思想

 

这个地方有一个简单的原理就是

Job.setNumReduce(2)会设置reduce的数量

而HashPartioner类可以利用 key.hashcode % reduce的结果,将不同的map结果输入到不同的reduce中,比如a-e开头的放到一个地方,e-z开头的放到一个地方,那么

mapreduce单词统计理解核心思想

 

mapreduce单词统计理解核心思想

 

这样的数据结果就会变成

mapreduce单词统计理解核心思想

 

mapreduce单词统计理解核心思想

 

mapreduce单词统计理解核心思想

 

好那么我们此时可以统计了,我开始编写代码

首先我们创建一个wordCount项目,我们创建的项目是maven项目

mapreduce单词统计理解核心思想

 

其中pom的配置部分

mapreduce单词统计理解核心思想

 

mapreduce单词统计理解核心思想

 

mapreduce单词统计理解核心思想

 

我们创建类

mapreduce单词统计理解核心思想

 

继承Mapper(注意注释)

mapreduce单词统计理解核心思想

 

编写代码

mapreduce单词统计理解核心思想

 

同样创建WordCountReducer,编写代码,利用前面的reduce思想理解

mapreduce单词统计理解核心思想

 

创建WordCountDriver类编写代码

mapreduce单词统计理解核心思想

 

导出项目jar

mapreduce单词统计理解核心思想

 

mapreduce单词统计理解核心思想

 

mapreduce单词统计理解核心思想

 

mapreduce单词统计理解核心思想

 

我们启动Hadoop

mapreduce单词统计理解核心思想

 

我们上传数据和jar包

mapreduce单词统计理解核心思想

 

将数据上传到hdfs上

mapreduce单词统计理解核心思想

 

执行下面语句

bin/yarn jar /data/wordCount/wordCount.jar com.xlglvc.xx.mapredece.wordcount_client.WordCountDriver /data.txt /outputwordcount

mapreduce单词统计理解核心思想

 

出了点问题,时间不同步

mapreduce单词统计理解核心思想

 

安装ntpdate工具

yum -y install ntp ntpdate

设置系统时间与网络时间同步

ntpdate cn.pool.ntp.org

mapreduce单词统计理解核心思想

 

然后重新执行,此时我们新选择个目录

bin/yarn jar /data/wordCount/wordCount.jar com.xlglvc.xx.mapredece.wordcount_client.WordCountDriver /data.txt /outputwordcount1

mapreduce单词统计理解核心思想

 

我们去浏览器查询

mapreduce单词统计理解核心思想

 

我们查看最终结果

bin/hdfs dfs -text /outputwordcount1/part-r-00000

mapreduce单词统计理解核心思想

 

出现我们想要的结果,统计完成

原文地址:https://www.cnblogs.com/bqwzy/p/12528446.html