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>(<飘>)的文本来做一个数据统计,看 ...
随机推荐
- drone 使用git tag触发构建
配置ref为tag .drone.yml中配置trigger为ref trigger: ref: - refs/tags/FileService 或者配置when为ref when: ref: - r ...
- php常用的数组排序函数
sort() 函数用于对数组单元从低到高进行排序.rsort() 函数用于对数组单元从高到低进行排序.asort() 函数用于对数组单元从低到高进行排序并保持索引关系.arsort() 函数用于对数组 ...
- Spring 容器的启动过程 流程图 自己看源码的梳理 如有错错误 请指正
- call this的范围
var f1=function(){this.a="类f1的实例的a属性"}; f1代表一个类: f1.a='对象f1的a属性'; var f2=function(){};//类f ...
- python爬取信息到数据库与mysql简单的表操作
python 爬取豆瓣top250并导入到mysql数据库中 import pymysql import requests import re url='https://movie.douban.co ...
- axiso 高级封装
import axios from 'axios'; import qs from 'qs'; const Unit = { async getApi(ajaxCfg){ let data = a ...
- java -jar 配置参数写法说明
java -Dxxx=test -jar xxx.jar (放在-jar之前) 取值:System.getProperty("xxx") spring的@value(" ...
- JAVA连接redis报错 :stop-writes-on-bgsave-error option
(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist o ...
- Android NDK开发篇:Java与原生代码通信(数据操作)
虽然说使用NDK可以提高Android程序的执行效率,但是调用起来还是稍微有点麻烦.NDK可以直接使用Java的原生数据类型,而引用类型,因为Java的引用类型的实现在NDK被屏蔽了,所以在NDK使用 ...
- c++11之日期和时间库
本文主要介绍 std::chrono日期和时间用法. 演示环境: vs2017 0.头文件 1 #include <chrono> 2 #include <thread>// ...