I'm wondering how much better off we'd be batching up larger jobs when we can.  What I mean is that even when prefetchPartitions == n > 1, we still process each of those n partitions in a separate job, and then all subsequent partitions are also processed in one-partition jobs.  I guess that is fine when the size of the result chunk you want to handle is the same as the size of the results that one partition will generate; but at least in the case where you want larger result chunks, then it would seem that we can avoid a considerable amount of scheduler overhead by batching up multi-partition jobs.  What I mean is that if, say, there are 1000 partitions in your RDD and you don't want to receive and process the complete results all at once but would like to receive 10 separate chunks, then it seems that RDDiterator should be producing 10 100-partition jobs instead of 1000 one-partition jobs.