(1)Text:文件按照行划分,key就是这一行在文件中的偏移量,value就是这一行文本
(2)FiexedLength:读取输入文件的固定长度的记录,这种文件不该是文本文件,二进制文件比较多
(3)KeyValue:文件按照行分割,按分隔符把一行数据切割,前面是key,后面是value组成,key 和 value的分隔符若没有指定,那么整行为key,value为空
(4)NLine:是可以将N行数据划分为一个Split,作为MapTask输入
(5)CombineTextInputFormat:把多个小文件合并成一个切片处理,提高处理效率
(6)自定义
用户根据业务实现三个方法:map(),setup(),cleanup()
(1)默认实现HashPartitioner,逻辑是根绝key得哈希值和numReduces来返回一个分区号
mapreduce强制按照key进行排序
(1)当我们用自定义得对象作为key来输出时,就必须实现WritableComparable接口,重写其中CompareTo()方法
(2)部分排序:对最终输出得每一个文件进行内部排序
(3)全排序:对所有数据进行排序,通常只有一个reduce
(4)二次排序:排序的条件有两个
Combiner合并可以提高程序的执行效率,减少IO传输。但是使用不能影响原有业务的处理结果
在reduce端对key进行分组,应用于:在接收的key为bean对象时,想让一个或者几个字段相同的key进入到同一个reduce方法,可以采用分组排序
用户根据业务实现三个方法;reduce(),setup(),cleanup()
(1)默认实现类是TextOutputFormat。功能逻辑是,将每一对kv对,向目标文件输出一行
(2)将SequenceFileOutputFormat输出作为后续Mapreduce任务的输入,这便是一种很好的输出形式,格式紧凑,容易被压缩
原文:https://www.cnblogs.com/hapyygril/p/14018805.html