<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-annotations</artifactId>
<version>3.3.0</version>
</dependency>
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
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.io.LongWritable;
import org.apache.hadoop.io.Text;
@Mapper
@Input(inputFormat = TextInputFormat.class, path = "/input/data.txt")
@Output(outputFormat = TextOutputFormat.class, path = "/output/result")
public class MyMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
}
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.LongWritable;
@Reducer
@Input(inputFormat = TextInputFormat.class, path = "/output/result")
@Output(outputFormat = TextOutputFormat.class, path = "/output/final_result")
public class MyReducer extends Reducer<Text, LongWritable, Text, LongWritable> {
}
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.mapreduce.Job;
@Job(name = "MyHadoopJob", inputFormat = TextInputFormat.class, outputFormat = TextOutputFormat.class)
public class MyHadoopJob extends Configured implements Tool {
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new MyHadoopJob(), args);
System.exit(res);
}
@Override
public int run(String[] args) throws Exception {
Job job = Job.getInstance(getConf(), "MyHadoopJob");
job.setJarByClass(getClass());
job.setMapperClass(MyMapper.class);
job.setReducerClass(MyReducer.class);
FileInputFormat.addInputPath(job, new Path("/input/data.txt"));
FileOutputFormat.setOutputPath(job, new Path("/output/result"));
return job.waitForCompletion(true) ? 0 : 1;
}
}