简单介绍下词频分析,就是统计一个文件中的字段名的出现的次数。
实现过程:
1.创建maven工程
在pom.xml中加入配置信息
以下内容可以在maven 中心仓库中找到

<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.8.3</version></dependency><!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies><!-- maven打包插件jdk的版本  --><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>

2.编写MapTask类和ReduceTask类

/*** KEYIN : 是接受的参数key的类型,默认是一行的起始偏移量,Long* VALUEIN: 是接受的参数valued的类型,默认是一行的内容,String* * KEYOUT: 是输出的key的类型,String* VALUEOUT:是输出的value的类型,Integer* * 然而,在mapreduce中,这些key、value数据需要经常序列化到磁盘文件中,但是java中的这些内置数据类型实现的是jdk中的serializable序列化接口* 这种序列化机制产生的二进制数据非常臃肿,在分佈式计算领域中,效率极其低下* * 所以,hadoop开发了一套自己的序列化机制,提供了一个序列化接口Writable* 那么,在mapreduce中,凡是需要进行序列化的数据,都必须实现Writable接口* * String  ==> Text* Integer ==> IntWritable* Long    ==> LongWritable* Float   ==> FloatWritable* Double  ==> DoubleWritable* ....* * @author hunter.ganhoo**/
public class MapTask extends Mapper<LongWritable, Text, Text, IntWritable>{
//继承mapper类的时候有四个参数,分别是keyin,valuein,keyout,valueout@Overrideprotected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context)throws IOException, InterruptedException {String[] split = value.toString().split(" ");for (String string : split) {context.write(new Text(string), new IntWritable(1));}}
}

reduce类:

public class ReduceTask extends Reducer<Text, IntWritable, Text, IntWritable>{@Overrideprotected void reduce(Text word, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {int count = 0;for (IntWritable value : values) {count += value.get();}context.write(word, new IntWritable(count));}}

3.还需要一个启动类Driver.class

public class Driver {public static void main(String[] args) throws Exception {Configuration conf = new Configuration();Job job = Job.getInstance(conf);//设置程序jar包所在的路径job.setJarByClass(Driver.class);job.setMapperClass(MapTask.class);//设置map方法所属类的位置job.setReducerClass(ReduceTask.class);//设置reduce方法所属类的位置job.setMapOutputKeyClass(Text.class);//map的输出的偏移量的类型job.setMapOutputValueClass(IntWritable.class);//输出的内容的类型job.setOutputKeyClass(Text.class);//对应job.setOutputValueClass(IntWritable.class);FileInputFormat.setInputPaths(job, new Path("/a.txt"));//指定hdfs集群上的文件路径FileOutputFormat.setOutputPath(job, new Path("/wordcount/output/"));//指定生成结果的路径//这个方法可以看到提交的过程boolean b = job.waitForCompletion(true);//提交结果 也可以是submit()System.out.println(b?"执行成功,没毛病,老铁":"执行失败了,老铁");}}

注意:这个是到集群的操作,也可以是本地,只需要在driver类中配置就行。

MapReduce函数实现WordCount相关推荐

  1. python写mapreduce_用python写MapReduce函数——以WordCount为例

    使用 python 写 MapReduce 的 " 诀窍 " 是利用 Hadoop 流的 API ,通过 STDIN( 标准输入 ) . STDOUT( 标准输出 ) 在 Map ...

  2. MapReduce实现改进版WordCount词频统计

    新手入门MapReduce实现改进版WordCount词频统计 一.实验任务要求 本实验是为了实现改进版的词频统计WordCount.要求根据所给的英文名著数据集和停用词表,统计英文名著数据集中词频, ...

  3. 超详细MapReduce程序实现WordCount案例

    一.案例准备 1.首先在本地创建两个文件,即文件A和文件B touch A B 2.在文件A和文件B中分别添加以下内容 A: China is my motherland I love China B ...

  4. 013 Mapreduce相关概念WordCount框架搭建WordCount的map和reduce函数实现 WordCount的驱动类编写WordCount测试MapReduce数学案例运算 AWK

    Mapreduce的相关概念 分布式并行离线计算框架MapReduce 即 如果文件里有三句话 hadoop is nice hadoop good hadoop is better 那么Map做的工 ...

  5. MapReduce流程(WordCount案例实现)

    文章目录 1 MapReduce概述 设计构思 实例进程 实例进程分类 完整执行过程 总结 2 MapReduce编程规范 Map阶段2个步骤 Shuffle阶段4个步骤 Reduce阶段2个步骤 3 ...

  6. hadoop jar包_Hadoop学习之路(5)Mapreduce程序完成wordcount

    程序使用的测试文本数据: Dear RiverDear River Bear Spark Car Dear Car Bear CarDear Car River Car Spark Spark Dea ...

  7. Spark使用UDF函数之WordCount实现

    用户定义函数(User-defined functions, UDFs)是大多数 SQL 环境的关键特性,用于扩展系统的内置功能. UDF允许开发人员通过抽象其低级语言实现来在更高级语言(如SQL)中 ...

  8. MapReduce—第一个WordCount程序

    Mapper类 我们自定义MyMapper类并继承Mapper, import java.io.IOException;import org.apache.hadoop.io.IntWritable; ...

  9. Java 实现MapReduce函数

    明白了MapReduce程序的工作原理之后,下一步就是写代码来实现它.我们需要三样东西:一个map函数.一个reduce函数和一些用来运行作业的代码.map函数由Mapper类来表示,后者声明一个ma ...

最新文章

  1. Django资源大全
  2. 删除WSS卸载后遗留的数据库
  3. sql查询mysql参数配置_查询参数配置
  4. flutter 一个用户登录页面
  5. Java学习笔记10---访问权限修饰符如何控制成员变量、成员方法及类的访问范围...
  6. netstat命令常见用法
  7. 企业级数据服务的一点感受
  8. 转:FAMI上的满分游戏
  9. 全球及中国SxS(遥控潜水器)行业商业模式分析及投资风险预测2022年版
  10. python接口自动化测试视频教程百度云全集_python自动化运维测试框架实战视频教程百度云资源...
  11. 【win10 企业版 LTSC一键安装微软应用商店Microsoft Store】直接使用GitHub上的开源项目,不用自己敲命令(亲测有效),附卸载工具
  12. 云e办学习笔记(二十七)邮件自动发送功能实现
  13. 关于pcl1.11.0无法找到 pcl/io/openni_grabber.h的解决办法
  14. 自动控制原理9.1---线性系统的状态空间描述(中下)
  15. CSS设置 background-image透明度小技巧
  16. 原生JS实现加载进度条
  17. Python-Flask开发微电影网站(九)
  18. IND-CPA(选择明文攻击下的不可区分性)
  19. x2检验(chi-square test)/ 卡方检验
  20. Java代码转换成伪代码生成器_将一段java程序片段改成算法伪代码

热门文章

  1. 怎样才能成为一个电玩程序员(转)
  2. 百科词条创建:百科创建词条的规则及具体步骤!
  3. 电源变频驱动主要有哪2种驱动方式?原理如何
  4. unbuntu18.04安装openni2过程记录
  5. OAuth2.0授权码/oauth/authorize接口调用unauthorized异常
  6. 计算机去云大还是昆工,云南最好的7所大学,分3档!本地人青睐昆医大,外省更爱昆工!...
  7. 保护linux 文件系统,使用 Tripwire 保护 Linux 文件系统 | Linux 中国
  8. 安装Windows10系统
  9. python是商业组织吗_可以用Python做什么?
  10. php读取所有cookie,PHP读取Cookie