控制job的Map个数

以下两个参数分别控制每个Map处理的最小/最大数据量,即splitsize大小设置为三四百M

set mapreduce.input.fileinputformat.split.minsize=300000000;

set mapreduce.input.fileinputformat.split.maxsize=400000000;

1)对于hive表中单个文件超过300M的,hive会按照300M去切分,启动一个map去处理,从而可以有效的控制map的个数。

2)如果hive表有大量的小文件,即一个文件大小在100M左右,设置此参数是不生效的,不会按照300M去切分,依旧是一个文件(100M)启动一个map去处理。

    这种情况下需要设置属性合并小文件,才会按照300M的数据量去分片,属性如下:

    set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;  #执行Map前进行小文件合并