title: Hadoop error in execution : Type mismatch in key from map: expected org.apache.hadoop.io.Text, recieved org.apache.hadoop.io.LongWritable
body: <p>I'm implementing a PageRank algorithm on Hadoop and as the title says i came up with the folowing error while trying to execute the code:</p>
  
  <p>Type mismatch in key from map: expected org.apache.hadoop.io.Text, recieved org.apache.hadoop.io.LongWritable</p>
  
  <p>In my Input file I store graph node id's as keys and some info about them as value. My input file has the following format:</p>
  
  <p>1 \t 3.4,2,5,6,67</p>
  
  <p>4 \t 4.2,77,2,7,83</p>
  
  <p>...
  ...</p>
  
  <p>Trying to understand what the error says I attempt to use LongWritable as my main variable type as you can see in the code below. This means I have: </p>
  
  <p>map&lt; LongWritable,LongWritable,LongWritable,LongWritable > </p>
  
  <p>reduce&lt; LongWritable,LongWritable,LongWritable,LongWritable > </p>
  
  <p>but,I also tried:</p>
  
  <p>map&lt; Text,Text,Text,Text > </p>
  
  <p>reduce&lt; Text,Text,Text,Text > </p>
  
  <p>and also:</p>
  
  <p>map&lt; LongWritable,Text,LongWritable,Text > </p>
  
  <p>reduce&lt; LongWritable,Text,LongWritable,Text > </p>
  
  <p>and I always come up with the same error. I guess I have trouble understanding what expected and received means in the error. Does it means that my map function expected LongWritable from my input file and it got Text? Is there a problem with the format of the input file I use or with the variable types? </p>
  
  <p>Here is the full code, can you tell me what to change and where?:</p>
  
  <pre><code>import java.io.IOException;
  import java.util.*;
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;
  import java.lang.Object.*;
  
  import org.apache.commons.cli.ParseException;
  import org.apache.commons.lang.StringUtils;
  import org.apache.commons.configuration.Configuration;
  import org.apache.hadoop.security.Credentials;
  import org.apache.log4j.*;
  import org.apache.commons.logging.*;
  import org.apache.hadoop.mapred.*;
  import org.apache.hadoop.fs.FileSystem;
  import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.io.Text;
  import org.apache.hadoop.io.DoubleWritable;
  import org.apache.hadoop.io.IntWritable;
  import org.apache.hadoop.io.LongWritable;
  import org.apache.hadoop.mapreduce.Job;
  import org.apache.hadoop.mapreduce.JobContext;
  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.input.SequenceFileInputFormat;
  import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
  import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
  import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;
  import org.apache.hadoop.util.GenericOptionsParser;
  
  
  
  public class Pagerank
  {   
  
  
  public static class PRMap extends Mapper&lt;LongWritable, LongWritable, LongWritable, LongWritable&gt;
  {
  
      public void map(LongWritable lineNum, LongWritable line, OutputCollector&lt;LongWritable, LongWritable&gt; outputCollector, Reporter reporter) throws IOException, InterruptedException
      {
          if (line.toString().length() == 0) {
              return;
          }
  
          Text key = new Text();
          Text value = new Text();
          LongWritable valuel = new LongWritable();
          StringTokenizer spline = new StringTokenizer(line.toString(),"\t");
          key.set(spline.nextToken());  
          value.set(spline.nextToken());  
  
          valuel.set(Long.parseLong(value.toString()));
          outputCollector.collect(lineNum,valuel);
  
  
          String info = value.toString();
          String splitter[] = info.split(",");
  
          if(splitter.length &gt;= 3)
          {
              float f = Float.parseFloat(splitter[0]);
              float pagerank = f / (splitter.length - 2);
  
              for(int i=2;i&lt;splitter.length;i++)
              {
                  LongWritable key2 = new LongWritable();
                  LongWritable value2 = new LongWritable();
                  long l;
  
                  l = Long.parseLong(splitter[i]);
                  key2.set(l);
                  //key2.set(splitter[i]);
                  value2.set((long)f);
  
                  outputCollector.collect(key2, value2);
              }
          }
      }
  }
  
  public static class PRReduce extends Reducer&lt;LongWritable,LongWritable,LongWritable,LongWritable&gt;
  {
      private Text result = new Text();
      public void reduce(LongWritable key, Iterator&lt;LongWritable&gt; values,OutputCollector&lt;LongWritable, LongWritable&gt; results, Reporter reporter) throws IOException, InterruptedException
      {
  
          float pagerank = 0;
          String allinone = ",";
          while(values.hasNext())
          {
              LongWritable temp = values.next();
              String converted = temp.toString();
              String[] splitted = converted.split(",");
  
              if(splitted.length &gt; 1)
              {                   
                  for(int i=1;i&lt;splitted.length;i++)
                  {
                      allinone = allinone.concat(splitted[i]);
                      if(i != splitted.length - 1)
                          allinone = allinone.concat(",");
                  }
              }
              else
              {
                  float f = Float.parseFloat(splitted[0]);
                  pagerank = pagerank + f;
              }
          }
          String last = Float.toString(pagerank);
          last = last.concat(allinone);
  
          LongWritable value = new LongWritable();
          value.set(Long.parseLong(last));
  
          results.collect(key, value);
      }      
  }
  
  
  
  public static void main(String[] args) throws Exception
  {      
  
  
      org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
  
      String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
      if (otherArgs.length != 2) {
        System.err.println("Usage: wordcount &lt;in&gt; &lt;out&gt;");
        System.exit(2);
      }
  
      Job job = new Job(conf, "pagerank_itr0");
  
      job.setJarByClass(Pagerank.class);      
      job.setMapperClass(Pagerank.PRMap.class);       
      job.setReducerClass(Pagerank.PRReduce.class);    
  
  
      job.setOutputKeyClass(LongWritable.class);            
      job.setOutputValueClass(LongWritable.class);            
      FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
      FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
      job.waitForCompletion(true);
  
  }
  }
  </code></pre>