Reduce个数和分区数不一致会出现的情况
首先,由于partition中的partition数量和reducer的数量是一致的,getpartition函数中的 numpartitions 也是由job设定的reducer值传入。
如果自定义了Partitioner,并设置了setNumReduceTasks,那么就会出现partition数量和reduce 个数不一致的情况
由于数据是根据分区写进reduce终产生的结果的,也就是如果reduce个数设置为2,那么假设 key.hashcode%numReduceTasks=0数据就会进入part-r-00000,key.hashcode%numReduceTasks=1数据就会进入part-r-00001,同理类推
如果partition分区数>reduce的个数,那么就会出现返回2的情况,可是没有part-r-00002这个文件,那么这部分数据就丢失了
如果partition分区数<reduce的个数,那么只会返回0或者1,就会造成数据倾斜,也就是只有partr-00000或者part-r-00001中的一个文件中有数据。
总结:不一致,会发生数据丢失或者数据倾斜。