MapReduce学习笔记(3) ——输入格式

来源:《Hadoop权威指南(第2版)》
单纯摘抄

 

1. 几个概念

输入分片:单个map处理的输入块。
记录:每个输入分片划分为若干个记录,每条记录就是一个键/值对,map一个接一个地处理每条记录。
 

2. 输入分片

输入分片在JAVA中表现为InputSplit接口。
InputSplit包含一个以字节为单位的长度和一组存储位置(主机名)。其中,长度用于排序分片,以便优先处理最大的分片,从而最小化作业运行时间。存储位置供MapReduce使用,以便将Map任务尽量放在分片数据附近。
 

3. FileInputFormat类

FileInputFormat类提供两个功能:
1)设置作业的文件路径
2)实现作业文件的分片

  • FileInputFormat只分割超过HDFS块大小的文件。
  • 分片大小由一个文件分片最小的有效字节数、一个文件分片最大的有效字节数以及HDFS块的大小决定:
    max(minimumSize, min(maximumSize,blockSize))
     
4. CombineFileInputFormat类

CombineFileInputFormat针对小文件而设计,将多个文件打包到一个分片中以便每个Mapper可以处理更多的数据,从而减少运行大量短时mapper所涉及的任务管理和启动开销。
 

5. 文本输入
  • TextInputFormat
    TextInputFormat是默认的InputFormat。
    每条记录是一行输入。
    键是LongWritable类型,存储该行在整个文件中的字节偏移量。
    值是Text类型,是记录这一行的内容,不包括任何行终止符(换行符和回车符)。
  • KeyValueTextInputFormat
  • NLineInputFormat
    NLineInputFormat可以设置每个mapper收到的输入行数,属性为mapred.line.input.format.linespermap。
  • StreamXmlRecordReader
     
6. 二进制输入
  • SequenceFileInputFormat
    若顺序文件数据作为MapReduce的输入,使用SequenceFileInputFormat。键、值由顺序文件确定。
  • SuquenceFileAsTextInputFormat
    SequenceFileInputFormat的变体,将顺序文件的键、值转换为Text对象。
  • SuquenceFileAsBinaryInputFormat
    SequenceFileInputFormat的变体,将顺序文件的键、值转换为二进制对象。
7. 多种输入

MultipleInputs允许为每条输入路径设置InputFormat和Mapper。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值