mapreduce中Partitioner数量与reducetask数量对结果影响
图中可以看出Partition主要作用就是将map的结果发送到相应的reduce。
1.现在测试一下第一种情况,Partition数量为1,返回值0,reduce数量为3。
设置reduce数量
设置Partition数量
结果输出3个文件,但只有part-r-00000有内容,其它两个为0字节。
2.现在测试一下第二种情况,Partition数量为1,返回值5,reduce数量为3。
设置reduce数量
设置Partition数量
结果输出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。
图中可以看出Partition主要作用就是将map的结果发送到相应的reduce。
1.现在测试一下第一种情况,Partition数量为1,返回值0,reduce数量为3。
设置reduce数量
设置Partition数量
结果输出3个文件,但只有part-r-00000有内容,其它两个为0字节。
2.现在测试一下第二种情况,Partition数量为1,返回值5,reduce数量为3。
设置reduce数量
设置Partition数量
结果输出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。