我是靠谱客的博主 甜蜜芹菜,最近开发中收集的这篇文章主要介绍使用hadoop-MapReduce统计文件中单词个数(每行一个单词),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第一步:写一个类用来统计文件中的个数。

第二步:因为mapreduce框架有默认实现,所以需要重写、覆盖mapreduce框架中map()和reduce()方法。

第三步:用main()方法当做mapreduce程序的入口,用来构建mapreduce框架,在main()方法中创建一个job任务。

第四步:使用maven的打包程序将代码打包成一个jar包。

第五步:将这个jar包传入到hadoop中使用,代码为:

hadoop jar jar包名 代码路径

(hadoop jar hadoop-1.0-SNAPSHOT.jar com.shujia.hadoop.MapReduceDemo01)

具体代码如下:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import java.io.IOException;
public class MapReduceDemo01 {
//map
//第一对kv决定数据输入的格式
//第二对kv决定数据输出的格式
public static class WCMapper extends
Mapper<LongWritable, Text, Text, LongWritable> {
/*
map阶段的数据是一行一行读过来的
每一行数据都需要执行代码
*/
//重写map()方法
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
context.write(new Text(line),new LongWritable(1));
}
}
//reduce
public static class WCReduce extends
Reducer<Text,LongWritable,Text,LongWritable>{
//重写reduce方法
@Override
protected void reduce(Text key, Iterable<LongWritable> values, Context context)
throws IOException, InterruptedException {
long sum = 0L;
for (LongWritable value : values) {
sum+=value.get();
}
context.write(key,new LongWritable(sum));
}
}
public static void main(String[] args) throws Exception {
//创建一个job任务
Job job = Job.getInstance();
//指定job名称
job.setJobName("第一个mr程序,单词统计");
//构建mr
//指定当前main所在的类
job.setJarByClass(MapReduceDemo01.class);
//指定map端类
//指定map端输出类型
job.setMapperClass(WCMapper.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(LongWritable.class);
//指定reduce端类
job.setReducerClass(WCReduce.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(LongWritable.class);
//指定输入的路径
Path in = new Path("/word");
FileInputFormat.addInputPath(job,in);
//指定输出路径
Path out = new Path("/output");
FileSystem fs = FileSystem.get(new Configuration());
if (fs.exists(out)){
fs.delete(out,true);
}
FileOutputFormat.setOutputPath(job,out);
//执行任务
job.waitForCompletion(true);
System.out.println("mr执行成功");
}
}

最后

以上就是甜蜜芹菜为你收集整理的使用hadoop-MapReduce统计文件中单词个数(每行一个单词)的全部内容,希望文章能够帮你解决使用hadoop-MapReduce统计文件中单词个数(每行一个单词)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部