• 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单词统计理解核心思想

     

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

  • 相关阅读:
    eclipse FilteredTree
    Windows API高精度计时 C#版
    循环中响应消息,避免循环时UI线程被阻塞
    Linux rpm 包制作 使用 rpmbuild
    利用Windows API实现精确计时
    C++显示选择文件夹对话框
    android AsyncTask
    [转]Android 动画学习笔记
    eclipse 中导入android 工程时出错:The method of type must override a superclass method 解决方式
    Android 自定义对话框
  • 原文地址:https://www.cnblogs.com/bqwzy/p/12528446.html
Copyright © 2020-2023  润新知