Java实现单词统计
原文链接:
https://www.toutiao.com/i6764296608705151496/
单词统计的是统计一个文件中单词出现的次数,比如下面的数据源
其中,最终出现的次数结果应该是下面的显示
那么在MapReduce中该如何编写代码并出现最终结果?
首先我们把文件上传到HDFS中(hdfs dfs –put …)
数据名称:data.txt,大小是size是2G
红黄绿三个块表示的是数据存放的块
然后数据data.txt进入map阶段,会以<K,V>(KV对)的形式进入,K表示的是:每行首字母相对于文件头的字节偏移量,V表示的是每一行的文本。
那么我可以用图表示:蓝色的椭圆球表示一个map,红黄绿数据块在进入map阶段的时候,数据的形式为左边红色的<K,V>(KV对)的形式
经过map处理,比如String.split(""),做一次处理,数据会在不同的红黄绿数据块中变为下面的KV形式
我们在配置Hadoop的时候或设置reduce的数量,假如有两个reduce
Map执行完的数据会放到对应的reduce中,如下图
这个地方有一个简单的原理就是
Job.setNumReduce(2)会设置reduce的数量
而HashPartioner类可以利用 key.hashcode % reduce的结果,将不同的map结果输入到不同的reduce中,比如a-e开头的放到一个地方,e-z开头的放到一个地方,那么
这样的数据结果就会变成
好那么我们此时可以统计了,我开始编写代码
首先我们创建一个wordCount项目,我们创建的项目是maven项目
其中pom的配置部分
我们创建类
继承Mapper(注意注释)
编写代码
同样创建WordCountReducer,编写代码,利用前面的reduce思想理解
创建WordCountDriver类编写代码
导出项目jar
我们启动Hadoop
我们上传数据和jar包
将数据上传到hdfs上
执行下面语句
bin/yarn jar /data/wordCount/wordCount.jar com.xlglvc.xx.mapredece.wordcount_client.WordCountDriver /data.txt /outputwordcount
出了点问题,时间不同步
安装ntpdate工具
yum -y install ntp ntpdate
设置系统时间与网络时间同步
ntpdate cn.pool.ntp.org
然后重新执行,此时我们新选择个目录
bin/yarn jar /data/wordCount/wordCount.jar com.xlglvc.xx.mapredece.wordcount_client.WordCountDriver /data.txt /outputwordcount1
我们去浏览器查询
我们查看最终结果
bin/hdfs dfs -text /outputwordcount1/part-r-00000
出现我们想要的结果,统计完成
Java实现单词统计的更多相关文章
- java源码——文件读写和单词统计
本文要解决的问题:"键盘输入一段英语语句,将这段话写入content.txt中,然后输出这段话,并且统计语句中英文单词的数目以及各个单词出现的次数." 分析问题知,核心是文件读写和 ...
- java课程课后作业190502之单词统计续集
第1步:输出单个文件中的前 N 个最常出现的英语单词. 功能1:输出文件中所有不重复的单词,按照出现次数由多到少排列,出现次数同样多的,以字典序排列. 功能2: 指定文件目录,对目录下每一个文件执行统 ...
- MapReduce 单词统计案例编程
MapReduce 单词统计案例编程 一.在Linux环境安装Eclipse软件 1. 解压tar包 下载安装包eclipse-jee-kepler-SR1-linux-gtk-x86_64.ta ...
- 2、 Spark Streaming方式从socket中获取数据进行简单单词统计
Spark 1.5.2 Spark Streaming 学习笔记和编程练习 Overview 概述 Spark Streaming is an extension of the core Spark ...
- scala基本语法和单词统计
scala 基本语法 1.声明变量 (1)val i = 1 使用val声明的变量值是不可变的,相当于java里final修饰的变量,推荐使用. (2)var i = "hello" ...
- Storm基础概念与单词统计示例
Storm基本概念 Storm是一个分布式的.可靠地.容错的数据流处理系统.Storm分布式计算结构称为Topology(拓扑)结构,顾名思义,与拓扑图十分类似.该拓扑图主要由数据流Stream.数据 ...
- 大数据学习——mapreduce程序单词统计
项目结构 pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...
- spark复习笔记(3):使用spark实现单词统计
wordcount是spark入门级的demo,不难但是很有趣.接下来我用命令行.scala.Java和python这三种语言来实现单词统计. 一.使用命令行实现单词的统计 1.首先touch一个a. ...
- Spark入门(三)--Spark经典的单词统计
spark经典之单词统计 准备数据 既然要统计单词我们就需要一个包含一定数量的文本,我们这里选择了英文原著<GoneWithTheWind>(<飘>)的文本来做一个数据统计,看 ...
随机推荐
- 【简】题解 P5283 [十二省联考2019]异或粽子
传送门:P5283 [十二省联考2019]异或粽子 题目大意: 给一个长度为n的数列,找到异或和为前k大的区间,并求出这些区间的异或和的代数和. QWQ: 考试时想到了前缀异或 想到了对每个数按二进制 ...
- [BUUCTF]REVERSE——[WUSTCTF2020]level1
[WUSTCTF2020]level1 附件 步骤: 下载下来的附件有两个,output.txt里是一堆数字 64位ida打开第一个附件,检索字符串,发现了flag字样 双击跟进,ctrl+x交叉引用 ...
- 工期设定(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 任务录入好以后,就得安排工期了不是,要不然每一个任务都如自动设置的从今天开始一个工作日内完成,这么简单的话,还要Proje ...
- App调试的几个命令实践
1.logcat命令这个命令最简单常用,可查看帮助 第一种事例:adb logcat > /sdcard/mylogcat.txt 第二种事例:adb logcat > D:/Temp/1 ...
- 【LeetCode】959. Regions Cut By Slashes 由斜杠划分区域(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题思路 代码 日期 题目地址:https://leetcod ...
- 【LeetCode】954. Array of Doubled Pairs 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【LeetCode】621. Task Scheduler 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 公式法 日期 题目地址:https://leetco ...
- Fast Matrix Operations(UVA)11992
UVA 11992 - Fast Matrix Operations 给定一个r*c(r<=20,r*c<=1e6)的矩阵,其元素都是0,现在对其子矩阵进行操作. 1 x1 y1 x2 y ...
- 1307 - Counting Triangles
1307 - Counting Triangles PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...
- 1087 - Diablo
1087 - Diablo PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 64 MB All of ...