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 ??

Reply via email to