mapreduce中Partitioner数量与reducetask数量对结果影响

mapreduce中Partitioner数量与reducetask数量对结果影响_第1张图片

图中可以看出Partition主要作用就是将map的结果发送到相应的reduce。

1.现在测试一下第一种情况,Partition数量为1,返回值0,reduce数量为3。


设置reduce数量

mapreduce中Partitioner数量与reducetask数量对结果影响_第2张图片

设置Partition数量

mapreduce中Partitioner数量与reducetask数量对结果影响_第3张图片

结果输出3个文件,但只有part-r-00000有内容,其它两个为0字节。


2.现在测试一下第二种情况,Partition数量为1,返回值5,reduce数量为3。


设置reduce数量

mapreduce中Partitioner数量与reducetask数量对结果影响_第4张图片

设置Partition数量

mapreduce中Partitioner数量与reducetask数量对结果影响_第5张图片

 结果输出3个文件,都为0字节。 


3.现在测试一下第三种情况,Partition数量为1,返回值1,reduce数量为3。

中间过程略

结果为输出3个文件,但只有part-r-00001有值。


4.现在测试一下第四种情况,Partition数量为3,返回值0、1、2,reduce数量为2。

中间过程略

结果为输出2个文件,part-r-00000、part-r-00001都有值,但结果不全,少了一部分。


总结:生成文件数量由reduce数量决定,值输出到哪个文件由partition返回值决定,输出值正确性由partition数量和返回值决定。一般情况是有多少个partition对应多少个reduce。

你可能感兴趣的:(hadoop)