java - Hadoop 中 Mapreduce 程序的意外输出

标签 java hadoop mapreduce

我正在研究 Hadoop。我的输出是预期的两倍
我无法理解为什么会这样。
请帮助我

下面是映射器类:

 import java.io.File;
 import java.io.IOException;
 import java.util.Scanner;
 import org.apache.hadoop.io.*;
 import org.apache.hadoop.mapred.*;

 public class StringMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable>
 {
       //hadoop supported data types
       private static IntWritable send;
       private Text word;

       //map method that performs the tokenizer job and framing the initial key value  pairs
  public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException
  {
        String line = value.toString();
        String out="";
        int count=0;
            out+=Integer.toString(count);
            send = new IntWritable(1);
            word = new Text(out);
            output.collect(word, send);                                               
   }
 }

下面是reducer类

import java.io.IOException;
import java.util.Iterator;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;

public class StringReducer extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable>
{
  //reduce method accepts the Key Value pairs from mappers, do the aggregation based on keys and produce the final output
  public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException
  {
        int sum=0;
        while(values.hasNext()){
            sum=sum+values.next().get();
        }
        output.collect(key, new IntWritable(sum));
  }
}

示例输入:
dashjdasdhashjfsda
dashjdasdhashjfsda
dashjdasdhashjfsda
dashjdasdhashjfsda
dashjdasdhashjfsda

示例输出
0 10

这里输出应该是0 5而不是0 10,因为我的输入只有五行。

最佳答案

您的程序似乎没问题。我复制了你的代码并在我的机器上运行它。它给出正确的输出,即 0 5

如果您使用的是 eclipse,请创建一个新配置并更改您的输入目录。
那么它可能会起作用。

关于java - Hadoop 中 Mapreduce 程序的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26923716/

相关文章:

java - 我如何在 Android 中使用 SQLite?

hadoop - pig 中查询内部组中的前 3 条记录

hadoop - 在单个节点上安装 PIG

hadoop - 在 hadoop 中,复制不足和复制过度意味着什么,它是如何工作的?

exception - 如何在 Oozie 中获取有关已终止作业的更具体的错误信息

java - 在 Eclipse 中导入同一项目中定义的类时出现错误

java - 用循环创建多个不同名称的文件?

java - 在hadoop上解析xml文件...

java - 带有 java.util.Calendar 的非标准语言环境

hadoop - Hadoop Reducer 是如何工作的?