Your delcaration of the Map class needs to include the input and
output types, e.g.:

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

-Joey

On Mon, Apr 25, 2011 at 4:38 AM, praveenesh kumar <praveen...@gmail.com> wrote:
> Hi,
>
> I am running the following code (Gender.java) on my hadoop .
>
>
> import java.io.IOException;
> import java.util.*;
>
> import org.apache.hadoop.fs.Path;
> import org.apache.hadoop.conf.*;
> import org.apache.hadoop.io.*;
> import org.apache.hadoop.mapred.*;
> import org.apache.hadoop.util.*;
>
> public class Gender {
>
>    private static String genderCheck = "female";
>
>    public static class Map extends MapReduceBase implements Mapper {
>        private final static IntWritable one = new IntWritable(1);
>        private Text locText = new Text();
>
>        public void map(LongWritable key, Text value, OutputCollector
> output, Reporter reporter) throws IOException {
>            String line = value.toString();
>            String location = line.split(",")[14] + "," +
> line.split(",")[15];
>            long male = 0L;
>            long female = 0L;
>            if (line.split(",")[17].matches("\d+") &&
> line.split(",")[18].matches("\d+")) {
>                male = Long.parseLong(line.split(",")[17]);
>                female = Long.parseLong(line.split(",")[18]);
>            }
>            long diff = male - female;
>            locText.set(location);
>            if (Gender.genderCheck.toLowerCase().equals("female") && diff <
> 0) {
>                output.collect(locText, new LongWritable(diff * -1L));
>            }
>            else if (Gender.genderCheck.toLowerCase().equals("male") && diff
>> 0) {
>                output.collect(locText, new
> LongWritable(diff));
>            }
>        }
>    }
>
>    public static void main(String[] args) throws Exception {
>        JobConf conf = new JobConf(Gender.class);
>        conf.setJobName("gender");
>        conf.setOutputKeyClass(Text.class);
>        conf.setOutputValueClass(LongWritable.class);
>        conf.setMapperClass(Map.class);
>
>        if (args.length != 3) {
>            System.out.println("Usage:");
>            System.out.println("[male/female] /path/to/2kh/files
> /path/to/output");
>            System.exit(1);
>        }
>
>        if (!args[0].equalsIgnoreCase("male") &&
> !args[0].equalsIgnoreCase("female")) {
>            System.out.println("first argument must be male or female");
>            System.exit(1);
>        }
>        Gender.genderCheck = args[0];
>
>        conf.setInputFormat(TextInputFormat.class);
>        conf.setOutputFormat(TextOutputFormat.class);
>        FileInputFormat.setInputPaths(conf, new Path(args[1]));
>        FileOutputFormat.setOutputPath(conf, new Path(args[2]));
>        JobClient.runJob(conf);
>    }
>
> }
>
> I am getting the following exception while compiling this  :
>
> *Gender.java:14: Gender.Map is not abstract and does not override abstract
> method
> map(java.lang.Object,java.lang.Object,org.apache.hadoop.mapred.OutputCollector,org.apache.hadoop.mapred.Reporter)
> in org.apache.hadoop.mapred.Mapper
>    public static class Map extends MapReduceBase implements Mapper {
>                  ^
> Note: Gender.java uses or overrides a deprecated API.
> Note: Recompile with -Xlint:deprecation for details.
> Note: Gender.java uses unchecked or unsafe operations.
> Note: Recompile with -Xlint:unchecked for details.
> *
> Anyone suggest me how to debug this error ??
>



-- 
Joseph Echeverria
Cloudera, Inc.
443.305.9434

Reply via email to