package org.apache.hadoop.corona;
import java.io.IOException;
import java.io.DataInput;
import java.io.DataOutput;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.examples.SleepJob;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.mapred.CoronaJobTracker;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.util.ToolRunner;
import org.apache.hadoop.mapreduce.InputFormat;
import org.apache.hadoop.mapreduce.InputSplit;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.JobContext;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.RecordReader;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.mapreduce.Mapper.Context;
import org.apache.hadoop.mapreduce.lib.input.LineRecordReader;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat;
class TstJob {
static class TestInputSplit extends InputSplit implements Writable {
private String[] locs;
public TestInputSplit() {}
TestInputSplit(String[] locs) { this.locs = locs; }
@Override
public long getLength() { return 0; }
@Override
public String[] getLocations() { return locs; }
@Override
public void readFields(DataInput in) throws IOException {
int len = in.readInt();
locs = new String[len];
for (int i = 0; i < len; i++) {
locs[i] = in.readUTF();
}
}
@Override
public void write(DataOutput out) throws IOException {
out.writeInt(locs.length);
for (String s: locs) {
out.writeUTF(s);
}
}
}
static class TestRecordReader extends RecordReader<LongWritable, Text> {
@Override
public void close() {}
@Override
public LongWritable getCurrentKey() { return null; }
@Override
public Text getCurrentValue() { return null; }
@Override
public float getProgress() { return 0; }
@Override
public void initialize(InputSplit split, TaskAttemptContext context) {}
@Override
public boolean nextKeyValue() { return false; }
}
static class TestInputFormat extends InputFormat<LongWritable, Text> {
@Override
public RecordReader<LongWritable, Text> createRecordReader(InputSplit split,
TaskAttemptContext context) throws IOException, InterruptedException {
return new TestRecordReader();
}
@Override
public List<InputSplit> getSplits(JobContext context) throws IOException,
InterruptedException {
String locationsCsv = context.getConfiguration().get("test.locations");
String[] locations = locationsCsv.split(",");
List<InputSplit> splits = new ArrayList<InputSplit>();
for (String loc: locations) {
splits.add(new TestInputSplit(new String[]{loc}));
}
return splits;
}
}
static class TestMapper extends Mapper<LongWritable, Text, LongWritable, Text> {
public void map(LongWritable key, Text val, Context c) {}
}
}