FileinputFormat切片机制
(1)简单地按照文件的内容长度进行切片
(2)切片大小 ,默认等于block大小
(3)切片时不考虑数据集整体 ,而是逐个针对每一个文件单独切片
自定义InputFormat流程
(1)自定义一个类继承FileInputFormat
(2)改写RecordReader ,实现一次读取一个完整文件封装为KV
如何决定一个job的map和reduce的数量?
1)map数量 splitSize=max{minSize,min{maxSize,blockSize}}
map数量由处理的数据分成的block数量决定default_num = total_size / split_size;
2)reduce数量 reduce的数量job.setNumReduceTasks(x);x 为reduce的数量。不设置的话默认为 1