FileInputFormat

FileInputFormat最顶级是InputFormat抽象类,该类定义了两个方法,方法getSplits是负责切分输入文件(们)的,把很多的输入文件(们)切分成很多的输入分片,切分规则就是在这里定义的,每个InputSpl

大家好,又见面了,我是你们的朋友全栈君。

最顶级是InputFormat抽象类 ,该类定义了两个方法,方法getSplits是负责切分输入文件(们)的,把很多的输入文件(们)切分成很多的输入分片,切分规则就是在这里定义的,每个InputSplit对应一个Mapper任务。方法createRecordReader是负责把getSplits生成的很多InputSplit解析成键值对的。InputFormat中的方法getSplits负责拆分输入文件的,方法createRecordReader负责把拆分的数据解析成键值对。这是从两个不同的角度设定的方法,职责不同,功能不同。方法getSplits的返回值是InputSplit的集合。抽象类InputSplit表示每个Mapper任务将要处理的数据,是二进制的,

根据要处理的数据类型不同,InputSplit也有不同的含义,因此会有很多子类。

方法createRecordReader的返回值是一个可以处理键值对的RecordReader。抽象类RecordReader是就是把InputSplit的数据解析成键值对的,提供了解析规则和读取键值对的方法,

根据数据不同,解析规则也会不同,因此会有很多子类。

根据解析的数据不同,InputFormat的子类有DBInputFormat、DelegatingInputFormat和FileInputFormat。其中,DBInputFormat是专门用于加载数据库中的数据的,如mysql、oracle等;FileInputFormat是专门用于处理文件中的数据的;DelegatingInputFormat是把其他各种InputFormat组成到一起的委托接口。从功能可以看出,FileInputFormat是用途最广的,其次是DBInputFormat,再次是DelegatingInputFormat。

FileInputFormat

该类是专门处理文件的,该类提供了如何计算输入分片(InputSplit)的方法。每个InputSplit对应一个运行的Mapper任务,因此InputSplit的数量决定了运行的Mapper任务数量,InputSplit的大小决定了每个Mapper任务处理数据量的大小。在这里,使用的是InputSplit的子类FileSplit。类FileSplit是专门用于处理输入文件的,会按照固定的字节数对每个输入文件进行拆分,拆分成很多的FileSplit。

根据文件的不同,对FileSplit解析成键值对的方式也有很多。因此,FileInputFormat会有很多的子类,包括TextInputFormat、KeyValueTextInputFormat、NLineInputFormat、CombineFileInputFormat和SequenceFileInputFormat。

输入格式化类的作用有两个:

  • 设定Mapper任务数量——通过getSplits方法实现;
  • 把输入文件的内容解析成键值对,供map函数调用——通过createRecordReader方法实现;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155143.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jar中没有主清单属性啥意思啊_maven打jar包无主清单属性

    jar中没有主清单属性啥意思啊_maven打jar包无主清单属性在maven-assembly-plugin插件配置中添加,如下内容:maven-assembly-plugin

    2022年9月5日
    2
  • mysql索引b树b+树_用B

    mysql索引b树b+树_用B第一篇引用第二篇引用第三篇引用第四篇引用

    2022年8月9日
    3
  • 服务器搭建个人网站(阿里云服务器)

    服务器搭建个人网站(阿里云服务器)服务器搭建个人网站一丶购买服务器这里我选的是阿里云服务器,进入阿里云官网https://www.aliyun.com阿里云提供了几种服务器,云服务器ESC、轻量应用服务器,ESC更好一点儿,我选了轻量级应用服务器。购买好了之后,在阿里云网站主页→控制台→轻量应用服务器。找到运行中的实例点进去就好了。服务器器就购买好了二、配置服务器环境首先你要知道怎么把你本机的文件放到你的

    2022年6月13日
    26
  • Python绘制旭日图_python绘制散点图

    Python绘制旭日图_python绘制散点图参考链接:https://blog.csdn.net/m0_67790374/article/details/124137448源数据:jupyter无法显示图像:https://blog.csdn.net/Caiqiudan/article/details/125117824

    2022年9月26日
    0
  • 函数的极限定义

    函数的极限定义函数的极限情况情况1:自变量x任意地接近于有限值x0,记作x->x0时,函数f(x)的变化情况;情况2:自变量x的绝对值|x|无限取向正无穷的时,函数f(x)的变化情况;然后明白下去心邻域:以x0这一点为中心的任何开区间——称为点x0的邻域。用符号表达为:U(x0)如果去掉x0这个点,那么就是去心邻域,用符号表达为:U’(x0)定义:|f(x)-A|<smallvalue,x无限趋向于x0这里的:smallvalue可以任意小,要多小有多小。A是一个常数。那么此时必

    2022年4月30日
    56
  • 智慧小区智慧物业管理系统一体化解决方案怎么写_小区物业管理系统界面

    智慧小区智慧物业管理系统一体化解决方案怎么写_小区物业管理系统界面传统物业在管理上不仅成本高,服务质量也很难有所保障。现在很多小区都安装了智能物业管理系统,它将信息手段与现代物业管理工作相结合,帮助物业管理团队及时响应客户需求,降低运营成本,提升服务品质。智慧物业是指充分利用物联网、云计算、移动互联网等新一代信息技术的集成应用,将物业各个单位紧密连接起来,实现数据的融合,建立起高效的联动机制。为业主提供一个安全、便利的智慧化生活环境。会比传统物业,带来更舒适的体验感与满意度。随着物联网不断完善,智能技术几乎渗透到各行各业的众多领域。智能运用的迅速发展将颠覆我们的生

    2022年10月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号