1.TextInputFormat

TextInputFormat是默认的InputFormat。每条记录是一行输入。键是LongWritable类型,存储该行在整个文件中的字节偏移量。值是这行的内容,不包括任何行终止符(换行符和回车符),它被打包成一个Text对象。
一般情况下,很难取得行号,因为文件按字节而不是按行切分为分片。每个分片单独处理。在分片内知道行号是可能的,但在文件中是不可能的。

输入分片与HDFS块之间的关系
FileInputFormat定义的逻辑记录有时并不能很好地匹配HDFS的文件快。例如,TextInputFormat的逻辑记录是以行为单位的,name有可能某一行会跨文件块存放。虽然这对程序的功能没有什么影响,如行不会丢失或出错,但这种现象应该引起注意,因为这意味着那些本地化的map(即map运行在输入数据所在的主机上)会执行一些远程的读操作。由此而来的额外开销一般不是特别明显。

2.关于KeyValueTextInputFormat

TextInputFormat的键,即每一行在文件中的字节偏移量,通常并不是特别有用。通常情况下,文件中的每一行是一个键/值对,使用某个分界符进行分隔,比如制表符。例如以下数据,用KeyValueTextInputFormat处理比较合适。
Line1 content1
Line2 content2
可以通过mapreduce.input.keyvaluelinerecordreader.key.value.separator属性来指定分隔符。它的默认值是一个制表符。与TextInputFormat类似,输入是一个包含4条记录的分片,不过此时的键是每行排在制表符之前的Text序列:
Line1,content1
Line2,content2

3.关于NLineInputFormat

通过TextInputFormat和KeyValueTextInputFormat,每个mapper收到的输入行数不同。行数取决于输入分片的大小和行的长度。如果希望mapper收到固定行数的输入,需要将NLineInputFormat作为InputFormat。与TextInputFormat一样,键是文件中行的字节偏移量,值是行本身。
N是每个mapper收到的输入行数。N设置为1(默认值)时,每个mapper正好收到一行输入。mapreduce.input.lineinputformat.linespermap属性实现N值的设定。
通常来说,对少量输入行执行map任务是比较抵消的(任务初始化的额外开销造成的),但有些应用程序会对少量数据做一些扩展的计算任务,然后产生输出。仿真例子:通过生成一个指定输入参数的输入文件,每行一个参数,便可以执行一个参数扫描分析:并发运行一组仿真实现,看模型是如何随参数不同而变化的。
另一个例子是用Hadoop引导从多个数据源(如数据库)加载数据。创建一个种子输入文件,记录所有的数据源,一行一个数据源。然后每个mapper分到一个数据源,并从这些数据源中加载数据到HDFS中。这个作业不需要reduce阶段,所以reduce的数据应该被设成0.MapReduce作业就可以处理加载到HDFS中的数据。

MapReduce-文本输入的更多相关文章

  1. MapReduce的输入格式

    1. InputFormat接口 InputFormat接口包含了两个抽象方法:getSplits()和creatRecordReader().InputFormat决定了Hadoop如何对文件进行分 ...

  2. emacs: 文本输入中文件目录自动补全

    emacs: 文本输入中文件目录自动补全 // */ // ]]> UP | HOME   emacs: 文本输入中文件目录自动补全 Table of Contents 1 引言 2 补全过程演 ...

  3. iOS,文本输入,键盘相关

    1.UIKeyboard键盘相关知识点 2.点击空白区域隐藏键盘(UIKeyboard) 3.键盘(UIKeyboard)挡住输入框处理 4.自定义键盘(UIKeyboard) 5.监听键盘弹出或消失 ...

  4. C# textbox 滚动条 随文本输入 滚动

    tb_Log.SelectionStart = tb_Log.Text.Length;//设置光标位置 tb_Log.ScrollToCaret();//随文本输入 滚动

  5. 最全的Swift社交应用文本输入优化汇总

    在大部分应用中,都有输入的需求,面对众多用户,他们的想法各异,输入的文本内容也是千奇百怪,面对不同的输入,我们该如何优化输入体验?本文将汇总一下Swift社交应用文本输入优化技巧. AD: 一.输入相 ...

  6. 第三十一篇-TextInputLayout(增强文本输入)的使用

    效果图: 密码使用的是增强文本输入类型,当密码长度小于6或者密码长度大于10的时候就会给出提示. main.xml 当添加TextInputLayout时,旁边会有一个下载符号,如果点不动,可以右键点 ...

  7. 【PyQt5-Qt Designer】QLineEdit 文本输入

    QLineEdit 文本输入 一.QlineEdit 基本方法 setAlignment() 按固定值方式对齐文本 Qt.AlignLeft:水平方向靠左对齐 Qt.AlignRight:水平方向靠右 ...

  8. Hadoop学习之路(二十二)MapReduce的输入和输出

    MapReduce的输入 作为一个会编写MR程序的人来说,知道map方法的参数是默认的数据读取组件读取到的一行数据 1.是谁在读取? 是谁在调用这个map方法? 查看源码Mapper.java知道是r ...

  9. a标签:鼠标指针变成文本输入图形

    今天我在使用a标签的时候,鼠标放在上面的时候总是显示文本输入的图形,不是小手的形状,找了好久的原因才发现由于我给它绑定了一个click事件,在事件里面进行了跳转,然后把 href ="#&q ...

  10. C# 文本输入限制类型,datagridview单元格输入验证

    1.只能输入double类型 private void textBoxX6_KeyPress(object sender, KeyPressEventArgs e) { { //数字0~9所对应的ke ...

随机推荐

  1. ProgressBar 进度条设置百分比显示

    rawable/progressbar <layer-list xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  2. jqgrid 事件说明

    Events(事件) 事件响应动作被设置为表格的属性,以下定义了行被选中时的响应: var lastSel; jQuery("#gridid").jqGrid({ ...    o ...

  3. css 变手

    用css 添加手状样式,鼠标移上去变小手,变小手 用css 添加手状样式,鼠标移上去变小手,变小手 cursor:pointer; 用JS使鼠标变小手onmouseover(鼠标越过的时候) onmo ...

  4. HTML学习笔记——常用元素及其属性(二)

    一.HTML表单 -- form标签 -- 与浏览者交互 1.form 标签 -- 代表HTML表单 form标签是成对出现的,以<form>开始,以</form>结束 属性. ...

  5. EF 批量更新删除(linq篇)

    刚开始用EF很多东西都不会用,事后想想都很简单的东西总是用很麻烦的方式实现 1:  EF的联合查询 inner join  很久很久以前我是这么写一个列表展示的,其中有两个字段Contractor和M ...

  6. Splitting Pile

    Splitting Pile Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement Snuke a ...

  7. JS将秒转换为 天

    function SecondToDate(msd) {             var time =msd             if (null != time && " ...

  8. WCF基础之传输

    WCF中使用的主要传输的方式有HTTP,TCP和命名管道. 绑定包括可选的协议绑定元素(如安全),必需的编码绑定元素和必须的传输协定绑定元素三个部分,而由传输方式则是由传输绑定元素来决定的. HTTP ...

  9. 高并发服务器建议调小 TCP 协议的 time_wait 超时时间

    说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服 务器端会因为处于 time_wait 的连接数太多,可能无法建立新的连接,所以需要在服务器上 调小此 ...

  10. Python3.6全栈开发实例[018]

    18.车牌区域划分, 现给出以下车牌.根据车牌的信息, 分析出各省的车牌持有量.(升级题) result = {} for car in cars: location = locals[car[0]] ...