组合器在Mapper之后和Reducer之前运行,它将接收Mapper实例在给定节点上发出的所有数据作为输入。然后它将输出发送到Reducers。因此,组合器输入的记录应小于地图输出。
12/08/29 13:38:49 INFO mapred.JobClient: Map-Reduce Framework
12/08/29 13:38:49 INFO mapred.JobClient: Reduce input groups=8649
12/08/29 13:38:49 INFO mapred.JobClient: Map output materialized bytes=306210
12/08/29 13:38:49 INFO mapred.JobClient: Combine output records=859412
12/08/29 13:38:49 INFO mapred.JobClient: Map input records=457272
12/08/29 13:38:49 INFO mapred.JobClient: Reduce shuffle bytes=0
12/08/29 13:38:49 INFO mapred.JobClient: Reduce output records=8649
12/08/29 13:38:49 INFO mapred.JobClient: Spilled Records=1632334
12/08/29 13:38:49 INFO mapred.JobClient: Map output bytes=331837344
12/08/29 13:38:49 INFO mapred.JobClient: **Combine input records=26154506**
12/08/29 13:38:49 INFO mapred.JobClient: **Map output records=25312392**
12/08/29 13:38:49 INFO mapred.JobClient: SPLIT_RAW_BYTES=218
12/08/29 13:38:49 INFO mapred.JobClient: Reduce input records=17298
答案 0 :(得分:4)
我认为这是因为Combiner也可以在之前的Combine步骤的输出上运行,因为您的Combiner运行并生成新记录,然后将其与Mappers中的其他记录结合使用。也可能是在合并器运行之后计算地图输出记录,这意味着记录较少,因为有些记录已合并。