MapReduce过程询问
JJZHK 2014-03-20 11:52:45 Spill阶段会按照分区编号从小到大将每个分区中的数据写入任务工作目录下的临时文件output/SpillN.out中,N表示溢写次数。在写入之前,会调用用户设置的Combiner方法(如果设置了的话),对每个分区进行一次聚集操作。
有几个问题想请各位大牛来解答一下:
1.每个spill*.out文件内部,是否可以跨分区呢。比如里面有200条记录,我前100条发送到reducer 0处理,后100条发送到reducer 1处理?
2. spill0.out根spill1.out是否可以是一个分区的?比如我的数据量很大,一共200条记录,100条的时候,就打到了阀值的80%,我需要spill,这100条发送到reducer 0的。后100条完了也spill,也是发送到reducer 0的?
3.如果上述两个问题都是肯定的,那么我就想问一下,那combine的时候怎么做呢。因为可能3个spill是一个分区的,另外两个是另外一个分区的。那么他怎么combine呢?