亲爱的网友,你能搜到本文中,说明您很希望了解这个问题,以下内容就是我们收集整理的相关资料,希望该答案能满足您的要求
1、简介:FileInputFormat是hadoop中实现文件输入的基本结构,它的实现将文件进行分块用于MapReduce处理。
2、功能:FileInputFormat是hadoop框架中唯一针对文件输入流的类,它负责根据文件创建一个InputSplit集合,每一个InputSplit包含一个特定的片段数据及其开始和结束位置,最后Mapper会从InputSplit中获得数据,处理完成后传递给Reducer处理过程。FileInputFormat还有一个重要功能,就是可以支持多种数据格式,包括TXT、XML等,甚至支持特殊的文件格式,例如HBase文件等。
3、作用:FileInputFormat主要的作用是将输入的文件根据指定的分解长度将文件转换成一系列的InputSplit,即输入的文件被切分成一系列split,这些split装换后会经过setupJobContext()和setInputPaths()这2个方法的过程,最后传递给Mapper,由Mapper程序根据InputSplit的位置信息对应读取数据文件。
4、应用场景:FileInputFormat可以用于Hadoop的各种ETL实现,特别是Hadoop中关于大数据分析中灵活使用InputFormat。FileInputFormat可以灵活使用,可以支持多种文件格式,比如TXXXML等,甚至特殊文件格式,例如HBase文件,同时它支持将文件分割成不同的slice,并给出对应的InputSplit,每一个InputSplit对应一个特定的单元数据,最后供Mapper使用,这让Mapper可以灵活利用,并降低参数维护的成本。
5、使用流程:FileInputFormat使用的步骤主要有:首先调用listStatus()方法拿到路径下的文件信息;之后调用getFileBlockLocations()将文件切分成可处理的部分,切分之后产生一系列InputSplit;最后,将切分出来的InputSplit传递给Mapper,由Mapper程序根据InputSplit的位置信息对应读取数据文件。
一、FileInputformat介绍
1、Fileinputformat是Hadoop MapReduce编程框架中提供的一个抽象类,它定义了MapReduce任务的输入处理的接口。
2、Fileinputformat的子类定义如何从HDFS上读取原始数据,并把它们变成mapper阶段的key-value键值对。
3、Fileinputformat充当“切分器”的角色,用于确定hdfs文件的“切片”,不同的Fileinputformat类子类定义不同的切片策略,从而实现MapReduce编程框架对原始数据的读取工作。
二、fileinputformat的作用
1、获取数据集:Fileinputformat定义了MapReduce jobs如何从HDFS中读取原始数据,包括文件路径、块大小等信息,把文件转换成key-value键值对,即可供框架使用。
2、实现数据切分:Fileinputformat起到了“切分器”的角色,切分完数据集后将它们作为Mapper阶段的输入,实现数据切分。
3、实现分布式处理:Fileinputformat使mapper task可以并行处理,分散在不同的节点上处理数据,提高程序的处理性能。
4、在任务提交时共享参数:Fileinputformat给提交的作业传递参数,比如文件路径、地址、分片大小等信息,让每个mapper task开始前就知道该处理的文件。
三、FileInputFormat的实现
1、从HDFS读取文件:从HDFS上获取原始数据,并将其分成一个一个的文件块,每一个文件块将作为MapReduce任务的输入。
2、创建InputSplit:为每一个文件块创建一个InputSplit对象,描述文件块的信息,包括文件名、起始字节数和长度等。
3、创建RecordReader:创建RecordReader的实例,把InputSplit中的数据提取出来,并转换成key-value键值对,提供给mapper task处理。
4、HDFS客户端:文件块被分发到不同的节点上处理时,用HDFS客户端从HDFS服务器上读取文件块数据,传输到各个节点。
四、典型例子
1、TextInputFormat:它是Fileinputformat的默认子类,Hadoop文本文件的默认输入类型,它将文本文件按行分割成InputSplit,把每一行作为Key-value键值对返回给mapper task处理。
2、SequencefileInputFormat:用于读取SequenceFile输出的文件,它定义一个RecordReader,把SequenceFile的每一个记录作为key-value键值对返回给Mapper task。
3、WholeFileInputFormat:针对读取整个文件,它不会把文件拆分成几个块,而是直接将整个文件发送到一个mapper task上去处理。
五、fileinputformat的优势
1、提供了分布式处理的能力:Fileinputformat能够把文件块发送到不同的节点上,并行处理,提高了程序的处理效率。
2、采用了抽象类面向对象技术:Fileinputformat使用抽象类技术,不同的文件格式可以使用不同的Fileinputformat子类,比如TextInputformats、SequenceFileInputformats等,使得数据处理变得更加灵活。
3、增加了可维护性:Fileinputformat使得Mapreduce编程更加解耦,降低了软件的复杂度,增加了程序的可维护性。
不知这篇文章是否帮您解答了与标题相关的疑惑,如果您对本篇文章满意,请劳驾您在文章结尾点击“顶一下”,以示对该文章的肯定,如果您不满意,则也请“踩一下”,以便督促我们改进该篇文章。如果您想更进步了解相关内容,可查看文章下方的相关链接,那里很可能有你想要的内容。最后,感谢客官老爷的御览