分区概念
分区这个词对很多同学来说并不陌生,比如Java很多中间件中,像kafka的分区,mysql的分区表等,分区存在的意义在于将数据按照业务规则进行合理的划分,方便后续对各个分区数据高效处理
Hadoop分区
hadoop中的分区,是把不同数据输出到不同reduceTask ,最终到输出不同文件中
hadoop 默认分区规则
- hash分区
- 按照key的hashCode % reduceTask 数量 = 分区号
- 默认reduceTask 数量为1,当然也可以在driver 端设置
以下是Partition 类中摘取出来的源码,还是很容易懂的
hash分区代码演示
下面是wordcount案例中的driver部分的代码,默认情况下我们不做任何设置,最终输出一个统计单词个数的txt文件,如果我们在这段代码中添加这样一行
再次运行下面的程序后,会出现什么结果呢?
public class DemoJobDriver {
public static void main(String[] args) throws Exception {