package org.archive.hadoop.pig;
import java.io.IOException;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.InputFormat;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.JobContext;
import org.apache.hadoop.mapreduce.RecordReader;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;
import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigSplit;
import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigTextInputFormat;
import org.apache.pig.builtin.TextLoader;
public class PerMapTextLoader extends TextLoader {
Path sourcePath;
Job currJob;
@Override
public void setLocation(String location, Job job) throws IOException {
currJob = job;
super.setLocation(location, job);
}
@Override
public void prepareToRead(RecordReader reader, PigSplit split) {
sourcePath = ((FileSplit)split.getWrappedSplit()).getPath();
if (currJob != null) {
currJob.getConfiguration().set("map.input.file", sourcePath.toString());
}
super.prepareToRead(reader, split);
}
@Override
public InputFormat getInputFormat() {
return new PigTextInputFormat()
{
@Override
protected boolean isSplitable(JobContext context, Path file) {
context.getConfiguration().set("map.input.file", file.toString());
return false;
}
};
}
}