简单的MapReduce项目,计算文件中单词出现的次数

计算文件中单词出现的次数,试题如下图

1、创建读取单词的文件tast,内容如下:

hadoop core map reduce hiv hbase Hbase
pig hadoop mapreduce MapReduce Hadoop Hbase
spark

2、流程图如下:

根据上图得知,计算流程中Mapping和Reducing是需要自己编写功能,其他交给Map/Reduce完成的

那么,我们首先编写Mapping步骤的代码,

新建WcMapper.java

  1. package com.all58.mr;

  2. import java.io.IOException;

  3. import java.util.StringTokenizer;

  4. import org.apache.hadoop.io.IntWritable;

  5. import org.apache.hadoop.io.LongWritable;

  6. import org.apache.hadoop.io.Text;

  7. import org.apache.hadoop.mapreduce.Mapper;

  8. public class WcMapper extends Mapper<LongWritable, Text, Text, IntWritable>{

  9. private final static IntWritable one = new IntWritable(1);

  10. private Text word = new Text();

  11. /**

  12. * 每次调用map方法会传入split中一行数据;

  13. * key:该行数据所在文件中的位置下标

  14. * value:该行数据

  15. */

  16. @Override

  17. protected void map(LongWritable key, Text value, Context context)

  18. throws IOException, InterruptedException {

  19. String line = value.toString();

  20. StringTokenizer itr = new StringTokenizer(line);

  21. while (itr.hasMoreTokens()) {

  22. word.set(itr.nextToken());

  23. context.write(word, one);//map的输出

  24. }

  25. }

  26. }

新建WcReduce.java

  1. package com.all58.mr;

  2. import java.io.IOException;

  3. import org.apache.hadoop.io.IntWritable;

  4. import org.apache.hadoop.io.Text;

  5. import org.apache.hadoop.mapreduce.Reducer;

  6. public class WcReducer extends Reducer<Text, IntWritable, Text, IntWritable> {

  7. private IntWritable result = new IntWritable();

  8. @Override

  9. protected void reduce(Text key, Iterable<IntWritable> iter,

  10. Context context) throws IOException, InterruptedException {

  11. int sum = 0;

  12. for (IntWritable value : iter) {

  13. sum += value.get();

  14. }

  15. result.set(sum);

  16. context.write(key, result);

  17. }

  18. }

到此,计算程序全部完成,下面编写Job执行程序

新建JobRun.java

  1. package com.all58.mr;

  2. import org.apache.hadoop.conf.Configuration;

  3. import org.apache.hadoop.fs.Path;

  4. import org.apache.hadoop.io.IntWritable;

  5. import org.apache.hadoop.io.Text;

  6. import org.apache.hadoop.mapreduce.Job;

  7. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

  8. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

  9. public class JobRun {

  10. public static void main(String[] args) {

  11. Configuration conf = new Configuration();

  12. conf.set("mapred.job.tracker", "node1:9001");

  13. try {

  14. Job job = new Job(conf);

  15. job.setJarByClass(JobRun.class);

  16. job.setMapperClass(WcMapper.class);

  17. job.setReducerClass(WcReducer.class);

  18. job.setMapOutputKeyClass(Text.class);

  19. job.setMapOutputValueClass(IntWritable.class);

  20. //job.setNumReduceTasks(1);//设置reduce任务的个数

  21. //mapreduce输入数据所在目录或文件

  22. FileInputFormat.addInputPath(job, new Path("/opt/hadoop-1.2/mapred/xiaoming"));

  23. //mapreduce执行之后的输出数据的目录

  24. FileOutputFormat.setOutputPath(job, new Path("/opt/hadoop-1.2/mapred/xiaoming/output"));

  25. System.exit(job.waitForCompletion(true) ? 0 : 1);

  26. } catch (Exception e) {

  27. e.printStackTrace();

  28. }

  29. }

  30. }

运行

1、eclipse导出jar包 wc.jar,使用scp上传至node1服务器

2、进入node1服务器~/hadoop-1.2.1/bin,执行命令

./hadoop jar ~/wc.jar com.all58.mr.JobRun

执行完毕,如下图

打开eclipse,查看结果

part-r-00000的内容:

  1. Hadoop 1

  2. Hbase 2

  3. MapReduce 1

  4. core 1

  5. hadoop 1

  6. hbase 1

  7. hiv 1

  8. map 1

  9. mapreduce 1

  10. pig 1

  11. reduce 1

  12. spark 1

  13. hadoop 1

简单的MapReduce项目,计算文件中单词出现的次数相关推荐

  1. python统计有几个单词_统计文件中单词的个数---Shell及python版

    最近在看shell中有个题目为统计单词的个数,使用了awk功能,代码如下 #!/bin/bash if [ $# -ne ];then echo "Usage:basename $0 fil ...

  2. linux字符串排序文件,Linux awk+uniq+sort 统计文件中某字符串出现次数并排序

    https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...

  3. Mapreduce程序 统计文件中每个单词出现次数

    mapreduce程序 统计文件中每个单词出现次数 调用MapReduce对文件中各个单词出现次数进行统计 一.安装环境 二.准备工作 1.创建Hadoop账户 2.更新 apt 3.安装vim 4. ...

  4. 【数据结构笔记42】哈希表应用:文件中单词词频统计

    本次笔记内容: 11.5 文件中单词词频统计 文章目录 题目 分析 程序框架 题目 如上图,对单词词频进行统计. 分析 如上图,涉及到对已有单词进行查找,因此要进行单词的管理,使用散列表. 程序框架 ...

  5. python读取日志统计ip_使用python脚本实现统计日志文件中的ip访问次数

    使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...

  6. python统计单词出现次数最多的5个单词_【Python】统计文本中单词的出现次数前十的单词...

    代码: # 读取一个文本,并且统计文本中单词的出现次数 def read_file(): # 在windows环境中的编码问题,指定utf-8 with open('F:/python源码/实验区/0 ...

  7. 接收输入的一行字符,统计出字符串包含数字的个数 2、编写一个程序,计算字符串中子串出现的次数 3、请输入星期几的第1个字母,用来判断是星期几,如果第1个字母一样,则继续判断第2个字母,依次类推。

    1.接收输入的一行字符,统计出字符串包含数字的个数 list_1 = input('请输入一行字符串:') count = 0 for i in list_1:if '0' <= i <= ...

  8. 计算字符串中子串出现的次数

    计算字符串中子串出现的次数 1.程序分析: 2.程序源代码: #include "string.h" #include "stdio.h" main() { c ...

  9. java统计文件中字符串出现的次数_统计一个字符串在文本文件中的出现次数

    代码实现: package com.jn.test; import java.io.File; import java.io.FileInputStream; import java.io.FileN ...

最新文章

  1. IOS第八天(1:UITableViewController团购,数据转模型,xib显示数据)
  2. Mysql学习积累之一[网摘收藏 个人学习参考]
  3. 剑指offer(C++)——链表中环的入口结点
  4. 信息安全工程师笔记-入侵检测技术原理与应用
  5. 面向连接的传输TCP(一)
  6. matlab元胞元素_MATLAB元胞数组(cell)知识
  7. LeetCode 127. Word Ladder
  8. html5学习笔记6-- canvas
  9. 中移杭研 | 面向互联网应用的实时业务风控系统
  10. 支付宝APP支付功能开发
  11. 做博客推广的SEO外链计划
  12. 如何利用excel中的数据源制作数据地图
  13. xmta温度控制仪说明书_XMT温度控制仪说明书
  14. PHP 图片转PDF
  15. 【Foreign】Melancholy [线段树]
  16. 大数据如何改变我们的国庆假期?
  17. mysql实验训练2 数据查询操作_实验训练2:数据查询操作
  18. 文件查找,打包压缩,解压相关分享
  19. 铸铁的弹性模量和泊松比_常用材料弹性模量和泊松比.docx
  20. GameFramework篇:使用源码替换GameFramework.dll

热门文章

  1. 反编译linux内核_Linux 后台开发常用调试工具
  2. 项目背景介绍及文件系统基本概念简介
  3. C和C++中的默认类型
  4. 结构体指针struct stu *p;和结构体变量struct stu p;结构体为什么要用指针引用而不用变量引用
  5. myisam为什么比innodb查询快_InnoDB 和 MyISAM的数据分布是什么样的?
  6. 线性代数笔记: Cholesky分解
  7. tableau必知必会之学做时尚的环状条形图(跑道图)
  8. Tableau必知必会之通过 tabadmin 备份 Tableau Server
  9. Python零碎知识(2):强大的zip
  10. db2数据库还原找不到文件_DB2 还原数据库