大数据技术Shuffle机制Partition分区

大数据培训教程Partition分区

1、问题引出
要求将统计结果按照条件输出到不同文件中(分区)。比如:将统计结果
按照手机归属地不同省份输出到不同文件中(分区)
2、默认Partitioner分区
public class HashPartitioner extends Partitioner{
public int getPartition (R key,v value, int numReduceTasks){
return (key.hashcode() & 工nteger.MAX_VALUE) numReduceTasks ;
默认分区是根据key的hashCode对ReduceTasks个数取模得到的。用户没法
控制哪个key存储到哪个分区。

大数据技术Shuffle机制Partition分区

4、分区总结大数据培训教程
(1〉如果ReduceTask的数量>getPartiticn的结果数,则会多产生几个空的输出文件part-r-00Oxx;
(2)如果1<ReduceTask的数量<getPartition的结果数,则有一部分分区数据无处安放,会Exception ;
(3)如果ReduceTask的数量=1,则不管MapTask端输出多少个分区文件,最终结果都交给这一个
ReduceTask,最终也就只会产生一个结果文件part-r-O0000 ;
(4)分区号必须从零开始,逐一累加。
5、案例分析大数据培训教程
例如:假设自定义分区数为5,则
(1) job.setNurmReduceTasks(1);会正常运行,只不过会产生一个输出文件
(2)job.setNumReduceTasks(2);会报错
(3)job.setNumReduceTasks(6);大于5,程序会正常运行,会产生空文件
让天不没有难学的技太

大数据培训