Mapreduce实例---统计单词个数(wordcount)
2018-10-29 17:44
274 查看
原文地址:https://www.geek-share.com/detail/2704815892.html
wordcount()
统计每一个单词在整个数据集中出现的总次数。
二:需要的jar包
Hadoop-2.4.1\share\hadoop\hdfs\hadoop-hdfs-2.4.1.jar
hadoop-2.4.1\share\hadoop\hdfs\lib\所有jar包
hadoop-2.4.1\share\hadoop\common\hadoop-common-2.4.1.jar
hadoop-2.4.1\share\hadoop\common\lib\所有jar包
hadoop-2.4.1\share\hadoop\mapreduce\除hadoop-mapreduce-examples-2.4.1.jar之外的jar包
hadoop-2.4.1\share\hadoop\mapreduce\lib\所有jar包
代码:
mapper类
[code]/* * KEYIN:输入kv数据对中key的数据类型 * VALUEIN:输入kv数据对中value的数据类型 * KEYOUT:输出kv数据对中key的数据类型 * VALUEOUT:输出kv数据对中value的数据类型 */ public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{ /* * map方法是提供给map task进程来调用的,map task进程是每读取一行文本来调用一次我们自定义的map方法 * map task在调用map方法时,传递的参数: * 一行的起始偏移量LongWritable作为key * 一行的文本内容Text作为value */ @Override protected void map(LongWritable key, Text value,Context context) throws IOException, InterruptedException { //拿到一行文本内容,转换成String 类型 String line = value.toString(); //将这行文本切分成单词 String[] words=line.split(" "); //输出<单词,1> for(String word:words){ context.write(new Text(word), new IntWritable(1)); } } }
reduce类
[code]/* * KEYIN:对应mapper阶段输出的key类型 * VALUEIN:对应mapper阶段输出的value类型 * KEYOUT:reduce处理完之后输出的结果kv对中key的类型 * VALUEOUT:reduce处理完之后输出的结果kv对中value的类型 */ public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{ @Override /* * reduce方法提供给reduce task进程来调用 * * reduce task会将shuffle阶段分发过来的大量kv数据对进行聚合,聚合的机制是相同key的kv对聚合为一组 * 然后reduce task对每一组聚合kv调用一次我们自定义的reduce方法 * 比如:<hello,1><hello,1><hello,1><tom,1><tom,1><tom,1> * hello组会调用一次reduce方法进行处理,tom组也会调用一次reduce方法进行处理 * 调用时传递的参数: * key:一组kv中的key * values:一组kv中所有value的迭代器 */ protected void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException { //定义一个计数器 int count = 0; //通过value这个迭代器,遍历这一组kv中所有的value,进行累加 for(IntWritable value:values){ count+=value.get(); } //输出这个单词的统计结果 context.write(key, new IntWritable(count)); } }
job提交:
[code]public class WordCountJobSubmitter { public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { Configuration conf = new Configuration(); Job wordCountJob = Job.getInstance(conf); //重要:指定本job所在的jar包 wordCountJob.setJarByClass(WordCountJobSubmitter.class); //设置wordCountJob所用的mapper逻辑类为哪个类 wordCountJob.setMapperClass(WordCountMapper.class); //设置wordCountJob所用的reducer逻辑类为哪个类 wordCountJob.setReducerClass(WordCountReducer.class); //设置map阶段输出的kv数据类型 wordCountJob.setMapOutputKeyClass(Text.class); wordCountJob.setMapOutputValueClass(IntWritable.class); //设置最终输出的kv数据类型 wordCountJob.setOutputKeyClass(Text.class); wordCountJob.setOutputValueClass(IntWritable.class); //设置要处理的文本数据所存放的路径 FileInputFormat.setInputPaths(wordCountJob, "hdfs://192.168.77.70:9000/wordcount/srcdata/"); FileOutputFormat.setOutputPath(wordCountJob, new Path("hdfs://192.168.77.70:9000/wordcount/output/")); //提交job给hadoop集群 wordCountJob.waitForCompletion(true); } }
阅读更多
相关文章推荐
- Mapreduce实例---统计单词个数(wordcount)
- hadoop实例分析之WordCount单词统计分析
- hadoop基础----hadoop实战(三)-----hadoop运行MapReduce---对单词进行统计--经典的自带例子wordcount
- hadoop基础----hadoop实战(三)-----hadoop运行MapReduce---对单词进行统计--经典的自带例子wordcount
- 和我一起学Hadoop(五):MapReduce的单词统计,wordcount
- 在Linux系统设置共享文件夹、Hadoop单机/伪分布部署,运行Hadoop Wordcount单词统计实例
- HADOOP(1)__Mapreduce_WordCount统计单词数
- 第六篇:Eclipse上运行第一个Hadoop实例 - WordCount(单词统计程序)
- Hadoop入门实例——WordCount统计单词
- hadoop实例分析之WordCount单词统计分析
- hadoop入门(六)JavaAPI+Mapreduce实例wordCount单词计数详解
- MapReduce的WordCount应用实例
- 《征服c指针》学习笔记-----统计文本单词数目的程序word_count
- hadoop MapReduce实例解析(wordcount例子)
- Flink简介及环境安装部署、词频统计实例、WordCount源码分析
- 学习Hadoop第十一课(MapReduce的实例---WordCount)
- 运行Hadoop自带的wordcount单词统计程序
- Scala中使用两种方式对单词进行次数统计(wordCount)
- MapReduce之WordCount单词计数(上)
- Hadoop编程入门,统计单词出现数目wordcount