如文件word.txt内容如下:

what is you name?

my name is zhang san。

要求统计word.txt中出现“is”的次数?

代码如下:

PerWordMapper

  1. package com.hadoop.wordcount;
  2.  
  3. import java.io.IOException;
  4. import java.util.StringTokenizer;
  5.  
  6. import org.apache.hadoop.io.IntWritable;
  7. import org.apache.hadoop.io.Text;
  8. import org.apache.hadoop.mapreduce.Mapper;
  9.  
  10. public class PerWordMapper extends Mapper<Object, Text, Text, IntWritable> {
  11.  
  12. public Text keyText = new Text();
  13. public IntWritable intValue = new IntWritable(1);
  14.  
  15. @Override
  16. protected void map(Object key, Text value,
  17. Context context)
  18. throws IOException, InterruptedException {
  19. String str = value.toString();
  20. StringTokenizer to = new StringTokenizer(str);
  21. while (to.hasMoreTokens()) {
  22. String t = to.nextToken();
  23. //此处为判断统计字符串的地方
  24. if(t.equals("is")){
  25. keyText = new Text(t);
  26. context.write(keyText, intValue);
  27. }
  28.  
  29. }
  30. }
  31. }

PerWordReducer

  1. package com.hadoop.wordcount;
  2.  
  3. import java.io.IOException;
  4.  
  5. import org.apache.hadoop.io.IntWritable;
  6. import org.apache.hadoop.io.Text;
  7. import org.apache.hadoop.mapreduce.Reducer;
  8.  
  9. public class PerWordReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
  10.  
  11. public IntWritable intValue = new IntWritable(0);
  12. @Override
  13. protected void reduce(Text key, Iterable<IntWritable> value,
  14. Context context)
  15. throws IOException, InterruptedException {
  16. int sum = 0;
  17. while(value.iterator().hasNext()){
  18. sum += value.iterator().next().get();
  19. }
  20. intValue.set(sum);
  21. context.write(key, intValue);
  22. }
  23.  
  24. }

PerWordCount

  1. package com.hadoop.wordcount;
  2.  
  3. import java.io.IOException;
  4.  
  5. import org.apache.hadoop.conf.Configuration;
  6. import org.apache.hadoop.fs.Path;
  7. import org.apache.hadoop.io.IntWritable;
  8. import org.apache.hadoop.io.Text;
  9. import org.apache.hadoop.mapreduce.Job;
  10. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  11. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  12. import org.apache.hadoop.util.GenericOptionsParser;
  13.  
  14. import com.hadoop.mapreducer.MapperClass;
  15. import com.hadoop.mapreducer.ReducerClass;
  16. import com.hadoop.mapreducer.WordCount;
  17.  
  18. public class PerWordCount {
  19. public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
  20. Configuration conf = new Configuration();
  21. String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
  22. System.out.println("otherArgs.length:"+otherArgs.length);
  23. if (otherArgs.length != 2) {
  24. System.err.println("Usage: wordcount <in> <out>");
  25. System.exit(2);
  26. }
  27. Job job = new Job(conf, "word count");
  28. job.setJarByClass(PerWordCount.class);
  29. job.setMapperClass(PerWordMapper.class);
  30. job.setCombinerClass(PerWordReducer.class);
  31. job.setReducerClass(PerWordReducer.class);
  32. job.setOutputKeyClass(Text.class);
  33. job.setOutputValueClass(IntWritable.class);
  34. FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
  35. FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
  36. System.exit(job.waitForCompletion(true) ? 0 : 1);
  37. }
  38.  
  39. }

Hadoop 统计文件中某个单词出现的次数的更多相关文章

  1. python统计文本中每个单词出现的次数

    .python统计文本中每个单词出现的次数: #coding=utf-8 __author__ = 'zcg' import collections import os with open('abc. ...

  2. Java笔记13:统计文件中每个字符出现的次数

    一.代码实现 import java.io.*; import java.util.*; /** 功能:统计文件中每个字符出现的次数 思路: 1.定义字符读取(缓冲)流 2.循环读取文件里的字符,用一 ...

  3. Scala快速统计文件中特定单词,字符的个数

    val fileContent=Source.fromFile("/home/soyo/桌面/ss5.txt").getLines.mkString(",") ...

  4. linux命令统计文件中某个字符串出现的次数

    1.使用grep linux grep命令在我的随笔linux分类里有过简单的介绍,这里就只简单的介绍下使用grep命令统计某个文件这某个字符串出现的次数,首先介绍grep命令的几个参数,详细参数请自 ...

  5. Java 中统计文件中出现单词的次数练习

    统计英文article.txt文件中出现hello这个单词的次数 这个是article.txt文件内容 { hello The Royal Navy is trying hello to play h ...

  6. 【面试题总结】1、统计字符串中某个单词出现的次数(1-C++实现)

    [解决方法一]C++ map解决 一.map中的find函数: 用于查找map中是否包含某个关键字条目,传入的参数是要查找的key,最后返回一个迭代器,如果没有找到,则返回的迭代器等于end()返回的 ...

  7. linux中统计文件中一个字符串出现的次数

    要统计一个字符串出现的次数,这里现提供自己常用两种方法: 1. 使用vim统计 用vim打开目标文件,在命令模式下,输入 :%s/objStr//gn 2. 使用grep: grep -o objSt ...

  8. 软件工程-构建之法 WordCount小程序 统计文件中字符串个数,单词个数,词频,行数

    一.前言 在之前写过一个词频统计的C语言课设,别人说你一个大三的怎么写C语言课程,我只想说我是先学习VB,VB是我编程语言的开始,然后接触到C语言及C++:再后来我是学习C++,然后反过来学习C语言, ...

  9. sort +awk+uniq 统计文件中出现次数最多的前10个单词

    实例cat logt.log|sort -s -t '-' -k1n |awk '{print $1;}'|uniq -c|sort -k1nr|head -100 统计文件中出现次数最多的前10个单 ...

随机推荐

  1. Appium Android Bootstrap源码分析之控件AndroidElement

    通过上一篇文章<Appium Android Bootstrap源码分析之简介>我们对bootstrap的定义以及其在appium和uiautomator处于一个什么样的位置有了一个初步的 ...

  2. jQuery的ready方法实现原理分析

    jQuery中的ready方法实现了当页面加载完成后才执行的效果,但他并不是window.onload或者doucment.onload的封装,而是使用 标准W3C浏览器DOM隐藏api和IE浏览器缺 ...

  3. Ajax跨域原理及JQuery中的实现

    浅析Ajax跨域原理及JQuery中的实现分析   AJAX 的出现使得网页可以通过在后台与服务器进行少量数据交换,实现网页的局部刷新.但是出于安全的考虑,ajax不允许跨域通信.如果尝试从不同的域请 ...

  4. firefox 对WebRTC支持

    本文原创自 http://blog.csdn.net/voipmaker  转载注明出处. firefox pc和android 最新版本号已经默认支持webrtc, 同一时候,firefox在支持V ...

  5. 读书笔记—CLR via C#章节3

    这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深 ...

  6. DDD领域驱动设计

    DDD领域驱动设计实践篇之如何提取模型 需求说明: 省级用户可以登记国家指标 省级用户和市级用户可以登记指标分解 登记国家指标时,需要录入以下数据:指标批次.文号.面积,这里省略其他数据,下同 登记指 ...

  7. Mac OS X下环境搭建 Sublime Text 2 环境变量配置 开发工具配置Golang (Go语言)

    Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 一.安装Golang的SDK 在官网http://golang.org/ 直接下载安装 ...

  8. SpecFlow使用入门之C# BDD

    SpecFlow使用入门 http://www.specflow.org/ SpecFlow是一个BDD工具,在这里对BDD不多赘述,你可以阅读一下微软2010年十二月的一篇文章,此外如果你想要更多了 ...

  9. iOS基础 - CALayer

    一.CALayer简介 Core Animation是跨平台的,支持iOS环境和Mac OS X环境 凡是支持跨平台的框架,都不能直接使用UIKit框架,因为UIKit框架只能应用在iOS而不能用于M ...

  10. iOS基础 - 完善键盘处理

    1.完善键盘处理 步骤一:创建一个数组,里面装着所有的文本框. 步骤二:监听所有文本框的开始编辑,设置所有文本框的代理为控制器 1.设置生日和城市不允许键盘输入 2.当开始编辑的时候调用,用一个成员属 ...