1. A method for parallel processing of data in a distributed operation, the method comprising: assigning a first input data block and a second input data block to a map process in a set of map processes for execution; applying an application specific map operation to data in the first input data block to produce a first set of key-value pairs; applying the application specific map operation to data in the second input data block to produce a second set of key-value pairs; wherein the first set of key-value pairs and the second set of key-value pairs include at least one key common to the first set of key-value pairs and the second set of key-value pairs; applying a combining operation to values associated with the common key in the first set of key-value pairs and the second set of key-value pairs to produce a combined value; determining whether an output condition occurs based on at least one of: (i) determining that a memory usage threshold is reached, (ii) determining that processing of the first input data block and the second input data block is complete, or (iii) receiving a command indicating that intermediate data should be output; and in response to determining that the output condition has occurred, outputting, from the set of map processes, intermediate data including one or more pairs of keys and combined values for processing in a reduce phase of the distributed operation.