1.FileInputFormat切片机制
默认切片机制
- 按照文件内容长度进行切片
- 默认大小等于block大小
- 切片时不考虑数据集整体性,而是逐个针对每个文件单独切片
举例:两个文件
File1.txt 200M
file2.txt 20M
切片信息如下:
File1.txt.split1—— 0~128
File1.txt.split2—— 128-200
File2.txt.split1—— 0-20
切片参数配置
- 切片的计算逻辑:Math.max(minSize, Math.min(maxSize, blockSize))
- 参数设置
mapreduce.input.fileinput.format.split.minsize=1 默认值为1
mapreduce.input.fileinput.format.split.maxsize=Long.MAXValue 默认值Long.MAXValue
FileInputFormat.setMinInputSplitSize(job, 512*1024*1024L); // 最小输入 512M
FileInputFormat.setMaxInputSplitSize(job, 1*1024*1024*1024L); // 最大输入 1G
因此,默认情况下,切片大小为blockSize
- 当minsize < maxsize < blockSize时,则切片大小为maxsize
- 当blockSi