@Override
public ReadableSource<Pair<K, V>> createSourceTarget(
Configuration conf, Path path, Iterable<Pair<K, V>> contents, int parallelism) throws IOException {
FileSystem fs = FileSystem.get(conf);
outputFn.setConfiguration(conf);
outputFn.initialize();
fs.mkdirs(path);
List<SequenceFile.Writer> writers = Lists.newArrayListWithExpectedSize(parallelism);
for (int i = 0; i < parallelism; i++) {
Path out = new Path(path, "out" + i);
writers.add(SequenceFile.createWriter(fs, conf, out, keyType.getSerializationClass(),
valueType.getSerializationClass()));
}
int target = 0;
for (Pair<K, V> value : contents) {
Pair writablePair = (Pair) outputFn.map(value);
writers.get(target).append(writablePair.first(), writablePair.second());
target = (target + 1) % parallelism;
}
for (SequenceFile.Writer writer : writers) {
writer.close();
}
ReadableSource<Pair<K, V>> ret = new SeqFileTableSource<K, V>(path, this);
ret.inputConf(RuntimeParameters.DISABLE_COMBINE_FILE, "true");
return ret;
}