控制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前进行小文件合并