mapper
public class OfferMapper extends TableMapper<Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
/**
* rowkey,value,context
*/
public void map(ImmutableBytesWritable key, Result value, Context context) throws IOException,
InterruptedException {
String titleValue = Bytes.toString(value.getValue(Bytes.toBytes("title"), null));
for(KeyValue kv : value.list()){
System.out.println(kv.getValue().toString());
word.set(kv.getValue());
context.write(word, one);
}
}
}
reducer:
public class OfferReducer extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException,
InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public class OfferTask {
final static String NAME = "OfferTask";
/**
* Sets up the actual job.
*
* @param conf The current configuration.
* @param args The command line parameters.
* @return The newly created job.
* @throws IOException When setting up the job fails.
*/
public static Job createSubmittableJob(Configuration conf, String[] args) throws IOException {
String tableName = args[0];
// Path inputDir = new Path(args[1]);
Job job = new Job(conf, NAME + "_" + tableName);
job.setJarByClass(OfferTask.class);
Scan myScan = new Scan();
TableMapReduceUtil.initTableMapperJob(tableName, myScan, OfferMapper.class, Text.class,
IntWritable.class, job);
TableMapReduceUtil.initTableReducerJob(tableName, OfferReducer.class, job);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileOutputFormat.setOutputPath(job, new Path(args[1]));
return job;
}
/**
* @param args
*/
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: OfferTask <tableName> <out>");
System.exit(2);
}
Job job = createSubmittableJob(conf, otherArgs);
System.exit(job.waitForCompletion(true) ? 0 : 1);
}