1.map数是由分割后/合并后最终的总文件数量决定的。
map数=map任务数=占用数据块数=大文件被分割后的总文件数=小文件被合并后的总文件数
由上面的等式可以看出,map数量是由分割后/合并后的总文件数量决定的。
也就是说文件的分割/合并处理方式是map数量研究的关键点。
1)文件的分割
输入的文件大小
分割文件的size由参数123决定
计算公式: split_size= Max(min_size,Min(max_size,dfs_size))
分类讨论:
第一种情况: max_size>min_size>dfs_size --> min_size
第二种情况: max_size>dfs_size>min_size --> dfs_size
第三种情况: dfs_size>max_size>min_size --> max_size
参数1: mapreduce.input.fileinputformat.split.maxsize
>>输入文件分割的最大size
参数2: mapreduce.input.fileinputformat.split.minsize
>>输入文件分割的最小size
参数3: dfs.blockSize
>>系统默认分割的size
在小部件上分割ORC文件
set hive.merge.mapfiles=true; set hive.merge.mapredfiles=true; set hive.merge.tezfiles=true; set hive.merge.smallfiles.avgsize=16000000;