在对日志等大表数据进行处理的时候需要人为地设置任务的map数,防止因map数过小导致集群资源被耗光。可根据大表的数据量大小设置每个split的大小。
例如设置每个split为500M:
set mapreduce.input.fileinputformat.split.maxsize=500000000; //控制map任务输入划分的最大字节数
set mapreduce.input.fileinputformat.split.minsize=500000000; //控制map任务输入划分的最小字节数
set mapreduce.input.fileinputformat.split.minsize.per.node=500000000;
set mapreduce.input.fileinputformat.split.minsize.per.rack=500000000;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
参考博文: