在对日志等大表数据进行处理的时候需要人为地设置任务的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;
参考博文:
MapReduce中的map个数
Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputFormat的map任务数量)
mapreduce中split划分分析(新版api)
转载于:https://www.cnblogs.com/shujuxiong/p/10058867.html