You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@hadoop.apache.org by Harshit Kumar <hk...@gmail.com> on 2009/09/07 12:40:29 UTC

Please interpret the output -please help - going mad

Hi
I am going mad, pulling my hairs now, past 2 days, trying to figure out the
output by this map-reduce program. Please help or you can find me in asylum.

in the map function below, output.collect(Text,Duo) - Duo is a custom input
format, map functions trasnfers "hello, duo("hello,hello")" key-value pair
to the reducer.

The reducer ouptuts "<hello,2>" as the key-value pair, however, the output
is actually different.

The input file is
I love you
you love me
we love eachother


The output is
I I love you
we we love eachother
you you love me

Please make me understand,  why the output is not <hello,2>.


---------------------------
Here is the code

public class SplitFile {

public static class Map extends MapReduceBase implements
Mapper<LongWritable, Text, Text, Duo> {


       public void map(LongWritable key, Text value, OutputCollector<Text,
Duo> output, Reporter reporter) throws IOException {
           String property=new String();
           String object = new String();
       String line = value.toString();
           StringTokenizer st = new StringTokenizer(line);
           Text subject = new Text(st.nextToken());
           property = st.nextToken();
   object = st.nextToken();
   Duo d = new Duo(property,object);
               output.collect(new Text("hello"),new Duo("hello","hello"));

       }
    }


    public static class Reduce extends MapReduceBase implements
Reducer<Text, Duo, Text, IntWritable> {

       public void reduce(Text key, Iterator<Duo> values,
OutputCollector<Text, IntWritable> output, Reporter reporter) throws
IOException {
     /*  String finalString=null;
      System.out.println("key"+key);
      Duo d = new Duo();
  while (values.hasNext()) {
           d = values.next();
           System.out.println("duo object received is = "+d.toString());
           finalString = d.getProperty()+ " " + d.getObject();
           //System.out.println("final String ="+finalString);
           }*/
  output.collect(new Text("hello"), new IntWritable(2));
       }
    }


    public static void main(String[] args) throws Exception {

       JobConf conf = new JobConf(SplitFile.class);
       conf.setJobName("SplitFile");

       conf.setMapOutputKeyClass(Text.class);
       conf.setMapOutputValueClass(Duo.class);

       conf.setOutputKeyClass(Text.class);
       conf.setOutputValueClass(IntWritable.class);

       conf.setMapperClass(Map.class);
       //conf.setCombinerClass(Reduce.class);
       conf.setReducerClass(Reduce.class);

       conf.setInputFormat(TextInputFormat.class);
       conf.setOutputFormat(TextOutputFormat.class);

       FileInputFormat.setInputPaths(conf, new Path("In"));
       FileOutputFormat.setOutputPath(conf, new Path("Out"));
       //System.out.println("2");
       JobClient.runJob(conf);
    }

}

Thanks and Regards
H. Kumar