MapReduce WordCount程序 - 输出与输入文件相同 [英] MapReduce WordCount Program - output is same as the input file

查看:181
本文介绍了MapReduce WordCount程序 - 输出与输入文件相同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我期望的输出是输入文件中每个单词的计数。但我的输出是整个输入文件,就像它一样。
我为映射类和 Reducer< Text,IntWritable,Text,IntWritable>扩展了Mapper< LongWritable,Text,Text,IntWritable> ; Reducer类的。
这是我的代码



driver.java

  public class driver extends Configured implements Tool {public int run(String [] args)throws Exception {Configuration conf = new Configuration();工作职位=新职位(conf,wordcount); job.setMapperClass(mapper.class); job.setReducerClass(reducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); job.setInputFormatClass(KeyValueTextInputFormat.class); FileInputFormat.addInputPath(job,new Path(args [0])); FileOutputFormat.setOutputPath(job,new Path(args [1])); job.waitForCompletion(真); //JobClient.runJob((JobConf)conf); //System.exit(job.waitForCompletion(true)?0:1);返回0; } public static void main(String [] args)throws Exception {long start = System.currentTimeMillis();} // int res = ToolRunner.run(new Configuration(),new driver(),args); int res = ToolRunner.run(new Configuration(),new driver(),args); long stop = System.currentTimeMillis(); System.out.println(Time:+(stop-start)); System.exit(RES); }}  

$ b

mapper.java



公共类映射器扩展映射器< LongWritable,Text,Text,IntWritable> {/ /编辑器代码
reducer.java

div class =snippetdata-lang =jsdata-hide =falsedata-console =falsedata-babel =false>

  public class reducer extends Reducer< Text,IntWritable,Text,IntWritable> {// reduce方法接受来自mappers的Key Value对, (Text键,Iterator< IntWritable>值,OutputCollector< Text,IntWritable>输出,Reporter记者)抛出IOException {int sum = 0; while(values.hasNext()){sum + = values.next()。get(); } output.collect(key,new IntWritable(sum)); }}  

被新的& MapReduce的旧API。我认为你试图在新的API中编写WordCount程序,但是从旧的API(旧的博客文章也许)中摘录了一些片段。如果您只是将 @override 注释添加到地图和放大器中,您可以自己找到问题。减少方法。

看看它们在进化之后会发生什么:

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆