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. JQuery实现动态生成树形菜单

    jQuery实现动态生成树形菜单 有一个需求:菜单导航条需要依据不同的权限动态提取出来.计划是将功能模块与用户权限之间的关系保持到一个配置表中.所以功能菜单的话就需要动态提取出来再显示.借助jquer ...

  2. TLE之前,没有一个节点叫失败!!!

    我想我十八年来记忆最深刻的夜晚,大概便是在吉林大学燥热的宿舍里,穿着橘黄色的短袖,努力咽下大口大口的雪碧.那天晚上我仰躺在吉大热得几乎不能入眠的床板上,一动不动,看夏夜里打不尽的蚊子在惨白的天花板下飞 ...

  3. 【BZOJ1449/2895】[JSOI2009]球队收益/球队预算 最小费用最大流

    [BZOJ2895]球队预算 Description 在一个篮球联赛里,有n支球队,球队的支出是和他们的胜负场次有关系的,具体来说,第i支球队的赛季总支出是Ci*x^2+Di*y^2,Di<=C ...

  4. httpclient设置proxy与proxyselector

    If single proxy for all targets is enough for you: HttpComponentsClientHttpRequestFactory clientHttp ...

  5. 记录--java获取网络资源(图片、音频等)保存本地

    注:本人开始运行下面报 java.io.FileNotFoundException ,纠结很久后清理tomcat后运行成功 //获取wav文件地址 String vRecordUrl=(request ...

  6. android菜鸟学习笔记29----Android应用向用户发送提示信息的方式总结

    常见的向用户发送提示信息的方式有3种,分别为: 1)发送Toast信息 2)弹出对话框 3)发送通知 总结如下: 方式1:发送Toast信息: 这种方式最简单,在之前的学习中多次使用过.Toast是在 ...

  7. 进程、数据共享、进程锁、进程池、requests模块和bs4(beautifulsoup)模块

    一.进程 1.进程间数据不共享,如下示例: import multiprocessing data_list = [] def task(arg): data_list.append(arg) pri ...

  8. Linux下简单的多线程编程--线程池的实现

    /* 写在前面的话: 今天刚“开原”,选择了一篇关于线程池的文件与大家分享,希望能对您学习有所帮助,也希望能与大家共同学习! 选择在这个特殊的时候注册并发文章也是有一些我个人特殊的意义的,看我的id( ...

  9. 004-RIP、OSPF【路由选择协议】

    常见的路由选择协议有:RIP协议.OSPF协议. 1.RIP协议 路由信息协议(英语:Routing Information Protocol,缩写:RIP)是一种内部网关协议(IGP),为最早出现的 ...

  10. hadoop linux 杂记

    切换到root        su    修改sudo sudo + 命令 --> root权限 + 命令        su root        vim /etc/sudoers      ...