Hadoop单词统计-各个过程详细说明
2016-12-17 13:42
288 查看
package hadoop01; import java.io.IOException; 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.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCount { /** * 一:调用Map执行 * map阶段 * 输入:行数为Key,正行的内容为value * 在map函数中,会对输入的值进行分割处理 * 输出:以<key,value>的形式输出数据。例如<"hello",1>; */ public static class WordCountmapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(); private Text word = new Text(); public void map(Object key,Text value,Context context) throws IOException, InterruptedException{ String [] words = value.toString().split(" "); for(String str : words){ word.set(str); context.write(word, one); } } } /** * 二:Map函数执行过程中 * map端输出的数据首先会存储在内存缓冲区中,当超出溢写阀值是,会将内存中的文件溢写到本地文件系统 * 1.在内存中,首先会进行partation操作,目的是将不同的key值分配到不同的reduce任务上,来进行负载均衡,默认的partation方法是Hash模运算 * 2.在溢写发生时,首相会对数据进行sort归并排序操作,产生的结果应该为<"hello",{1,1,1,1,1}>的形式 * 3.如果设置了Combiner,现在就会执行Combiner函数,进行map端的Combiner操作 * 4.将执行结果溢写到本地文件系统 */ /** * 三:Map函数执行完毕 * Map函数执行完毕后,可能会产生多个溢写文件,此时会对多个溢写文件进行合并操作 * 在合并文件的过程中,也可能进行Combiner操作 */ /** * 四:执行Reduce操作 * Reduce操作会把Map端的输出结果文件进行最终的合并,生成最终的结果 */ public static class WorldCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{ public void reduce(Text key,Iterable<IntWritable> value,Context context) throws IOException, InterruptedException{ int total = 0; for(IntWritable val : value){ total++; } context.write(key, new IntWritable(total)); } } public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { Configuration configuration = new Configuration(); Job job = new Job(configuration,"word count"); job.setJarByClass(WordCount.class); job.setMapperClass(WordCountmapper.class); job.setReducerClass(WorldCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path("/user/root/books")); FileOutputFormat.setOutputPath(job, new Path("/user/root/bookout")); System.exit(job.waitForCompletion(true)?0:1); } }
相关文章推荐
- RHEL5 Squid透明代理服务器配置过程详细说明
- 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
- bootloader启动过程详细说明
- hadoop namenode启动过程详细剖析及瓶颈分析
- 说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
- [转] Hadoop 2.0 详细安装过程
- Hadoop示例程序之单词统计MapReduce
- Hadoop集群Hadoop安装配置详细说明+SSH+KEY登陆
- 关于PHP-Zend framework2 框架 学习过程。 阅前须知: ZF2中的配置文件是可以静态文件配置来注册和通过相关函数动态注册。 1.EventManager(事件驱动),关于事件驱动,在ZF2相关资料没有详细说明,可以参考ANDROID的事件驱动,MFC的消息响应/事件驱动。
- 光纤熔接过程详细说明
- 用hadoop统计文本中单词的个数
- TestLink 1.9.3安装配置详细说明附带汉化过程
- Hadoop示例程序之单词统计MapReduce
- Hadoop 统计单词字数的例子
- 说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
- hadoop namenode启动过程详细剖析及瓶颈分析
- windows下MySQL5.6版本安装及配置过程附有截图和详细说明
- MySQL 储存过程-原理、语法、函数详细说明
- hadoop&nbsp;streaming的单词统计C++版
- Hadoop Demo 1 ——WordCount 统计文章中单词的个数