简单的MapReduce项目,计算文件中单词出现的次数
简单的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
package com.all58.mr;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WcMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
/**
* 每次调用map方法会传入split中一行数据;
* key:该行数据所在文件中的位置下标
* value:该行数据
*/
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer itr = new StringTokenizer(line);
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);//map的输出
}
}
}
新建WcReduce.java
package com.all58.mr;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class WcReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
private IntWritable result = new IntWritable();
@Override
protected void reduce(Text key, Iterable<IntWritable> iter,
Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable value : iter) {
sum += value.get();
}
result.set(sum);
context.write(key, result);
}
}
到此,计算程序全部完成,下面编写Job执行程序
新建JobRun.java
package com.all58.mr;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class JobRun {
public static void main(String[] args) {
Configuration conf = new Configuration();
conf.set("mapred.job.tracker", "node1:9001");
try {
Job job = new Job(conf);
job.setJarByClass(JobRun.class);
job.setMapperClass(WcMapper.class);
job.setReducerClass(WcReducer.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
//job.setNumReduceTasks(1);//设置reduce任务的个数
//mapreduce输入数据所在目录或文件
FileInputFormat.addInputPath(job, new Path("/opt/hadoop-1.2/mapred/xiaoming"));
//mapreduce执行之后的输出数据的目录
FileOutputFormat.setOutputPath(job, new Path("/opt/hadoop-1.2/mapred/xiaoming/output"));
System.exit(job.waitForCompletion(true) ? 0 : 1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行
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的内容:
Hadoop 1
Hbase 2
MapReduce 1
core 1
hadoop 1
hbase 1
hiv 1
map 1
mapreduce 1
pig 1
reduce 1
spark 1
hadoop 1
简单的MapReduce项目,计算文件中单词出现的次数相关推荐
- python统计有几个单词_统计文件中单词的个数---Shell及python版
最近在看shell中有个题目为统计单词的个数,使用了awk功能,代码如下 #!/bin/bash if [ $# -ne ];then echo "Usage:basename $0 fil ...
- linux字符串排序文件,Linux awk+uniq+sort 统计文件中某字符串出现次数并排序
https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...
- Mapreduce程序 统计文件中每个单词出现次数
mapreduce程序 统计文件中每个单词出现次数 调用MapReduce对文件中各个单词出现次数进行统计 一.安装环境 二.准备工作 1.创建Hadoop账户 2.更新 apt 3.安装vim 4. ...
- 【数据结构笔记42】哈希表应用:文件中单词词频统计
本次笔记内容: 11.5 文件中单词词频统计 文章目录 题目 分析 程序框架 题目 如上图,对单词词频进行统计. 分析 如上图,涉及到对已有单词进行查找,因此要进行单词的管理,使用散列表. 程序框架 ...
- python读取日志统计ip_使用python脚本实现统计日志文件中的ip访问次数
使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...
- python统计单词出现次数最多的5个单词_【Python】统计文本中单词的出现次数前十的单词...
代码: # 读取一个文本,并且统计文本中单词的出现次数 def read_file(): # 在windows环境中的编码问题,指定utf-8 with open('F:/python源码/实验区/0 ...
- 接收输入的一行字符,统计出字符串包含数字的个数 2、编写一个程序,计算字符串中子串出现的次数 3、请输入星期几的第1个字母,用来判断是星期几,如果第1个字母一样,则继续判断第2个字母,依次类推。
1.接收输入的一行字符,统计出字符串包含数字的个数 list_1 = input('请输入一行字符串:') count = 0 for i in list_1:if '0' <= i <= ...
- 计算字符串中子串出现的次数
计算字符串中子串出现的次数 1.程序分析: 2.程序源代码: #include "string.h" #include "stdio.h" main() { c ...
- java统计文件中字符串出现的次数_统计一个字符串在文本文件中的出现次数
代码实现: package com.jn.test; import java.io.File; import java.io.FileInputStream; import java.io.FileN ...
最新文章
- IOS第八天(1:UITableViewController团购,数据转模型,xib显示数据)
- Mysql学习积累之一[网摘收藏 个人学习参考]
- 剑指offer(C++)——链表中环的入口结点
- 信息安全工程师笔记-入侵检测技术原理与应用
- 面向连接的传输TCP(一)
- matlab元胞元素_MATLAB元胞数组(cell)知识
- LeetCode 127. Word Ladder
- html5学习笔记6-- canvas
- 中移杭研 | 面向互联网应用的实时业务风控系统
- 支付宝APP支付功能开发
- 做博客推广的SEO外链计划
- 如何利用excel中的数据源制作数据地图
- xmta温度控制仪说明书_XMT温度控制仪说明书
- PHP 图片转PDF
- 【Foreign】Melancholy [线段树]
- 大数据如何改变我们的国庆假期?
- mysql实验训练2 数据查询操作_实验训练2:数据查询操作
- 文件查找,打包压缩,解压相关分享
- 铸铁的弹性模量和泊松比_常用材料弹性模量和泊松比.docx
- GameFramework篇:使用源码替换GameFramework.dll
热门文章
- 反编译linux内核_Linux 后台开发常用调试工具
- 项目背景介绍及文件系统基本概念简介
- C和C++中的默认类型
- 结构体指针struct stu *p;和结构体变量struct stu p;结构体为什么要用指针引用而不用变量引用
- myisam为什么比innodb查询快_InnoDB 和 MyISAM的数据分布是什么样的?
- 线性代数笔记: Cholesky分解
- tableau必知必会之学做时尚的环状条形图(跑道图)
- Tableau必知必会之通过 tabadmin 备份 Tableau Server
- Python零碎知识(2):强大的zip
- db2数据库还原找不到文件_DB2 还原数据库