package edu.umd.cloud9.mapred;
import java.io.IOException;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapred.InputFormat;
import org.apache.hadoop.mapred.InputSplit;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.RecordReader;
import org.apache.hadoop.mapred.Reporter;
// Note, there was a thread on the Hadoop users list on exactly this issue.
// 5/8/2009, "How to write a map() method that needs no input?"
public class NullInputFormat implements InputFormat<NullWritable, NullWritable> {
public RecordReader<NullWritable, NullWritable> getRecordReader(InputSplit split, JobConf job,
Reporter reporter) {
return new NullRecordReader();
}
public InputSplit[] getSplits(JobConf job, int numSplits) {
InputSplit[] splits = new InputSplit[numSplits];
for (int i = 0; i < numSplits; i++)
splits[i] = new NullInputSplit();
return splits;
}
public void validateInput(JobConf job) {
}
public static class NullRecordReader implements RecordReader<NullWritable, NullWritable> {
private boolean returnRecord = true;
public NullRecordReader() {
}
public boolean next(NullWritable key, NullWritable value) throws IOException {
if (returnRecord == true) {
returnRecord = false;
return true;
}
return returnRecord;
}
public NullWritable createKey() {
return NullWritable.get();
}
public NullWritable createValue() {
return NullWritable.get();
}
public long getPos() throws IOException {
return 0;
}
public float getProgress() throws IOException {
return 0.0f;
}
public void close() {
}
}
}