Description
Right now, Crunch always writes output files from the "last" stage of whatever kind of job it runs: either the reduce-side of a MapReduce job, or the map-side of a map-only job. This often leads to situations where we have to re-process the same input twice, once for the map-side outputs and again for the reduce-side outputs.
This change adds the ability for Crunch to write side outputs from the mapper phase of a MapReduce job (i.e., we can write output Targets from both the map side and the reduce side.) This should help lots of pipelines that implement these types of writes execute much faster.