shuffle是通过分区partitioner 分配给Reduce,一个partition对应一个Reduce,Partitioner是shuffle的一部分。
1.默认Partition分区
默认分区是根据key的hashCode对ReduceTasks个数取模得到的,用户没法控制哪个key存储到哪个分区。
2.自定义Partition分区
因此若要按条件输出到不同文件中(分区),需要自定义类去继承Partitioner。
后两步设置一定要做,否则实现不了!
shuffle是通过分区partitioner 分配给Reduce,一个partition对应一个Reduce,Partitioner是shuffle的一部分。
默认分区是根据key的hashCode对ReduceTasks个数取模得到的,用户没法控制哪个key存储到哪个分区。
因此若要按条件输出到不同文件中(分区),需要自定义类去继承Partitioner。
后两步设置一定要做,否则实现不了!