final FileDataSource source =
new FileDataSource(new TeraInputFormat(), input, "Data Source");
source.setDegreeOfParallelism(numSubTasks);
// This task writes the sorted data back to disk
final FileDataSink sink =
new FileDataSink(new TeraOutputFormat(), output, "Data Sink");
sink.setDegreeOfParallelism(numSubTasks);
sink.setGlobalOrder(new Ordering(0, TeraKey.class, Order.ASCENDING), new TeraDistribution());
sink.setInput(source);
return new Plan(sink, "TeraSort");
}