MapReduce程序开发中的FileInputFormat与TextInputFormat
2016-04-03 21:14
288 查看
2016年4月3日20:17:44
MapReduce程序开发中的FileInputFormat与TextInputFormat
作者:数据分析玩家
在MapReduce程序的开发过程中,往往需要用到FileInputFormat与TextInputFormat,但是这两个类究竟是用来做什么的,在源代码的追踪过程中,我们会发现TextInputFormat这个类继承自FileInputFormat,FileInputFormat这个类继承自InputFormat,而在InputFormat的源代码中:
* Split-up the input file(s) into logical {@link InputSplit}s, each of
* which is then assigned to an individual {@link Mapper}.
通过这段源代码:我们可以大致知道:InputFormat这个类会将文件file按照逻辑进行划分,划分成的每一个split切片将会被分配给一个Mapper任务,而在MapReduce的原理运行中:
我们可以发现确实是这样的,文件先被切分成split块,而后每一个split切片对应一个Mapper任务
下面:我们将对FileInputFormat与TextInputFormat这两个类的具体功能进行阐述
FileInputFormat这个类先对输入文件进行逻辑上的划分,以64M为单位,将原始数据从逻辑上分割成若干个split,每个split切片对应一个Mapper任务
对于FileInputFormat这个类,我们需要注意:FileInputFormat这个类只划分比HDFS的block块大的文件,所以FileInputFormat划分的结果是这个文件或者是这个文件中的一部分.如果一个文件的大小比block块小,将不会被FileInputFormat这个类进行逻辑上的划分,此时每一个小文件都会当做一个split块并分配一个Mapper任务,导致效率低下.这也是Hadoop处理大文件的效率要比处理很多小文件的效率高的原因。
当FileInputFormat这个类将文件file切分成block块之后,TextInputFormat这个类随后将每个split块中的每行记录解析成一个一个的键值对,即<k1,v1>.
综上:我们可以简单理解为FileInputFormat这个类是将文件file切分成split块,而TextInputFormat这个类是负责将每一行记录解析为键值对<k1,v1>.
2016年4月3日21:13:05
MapReduce程序开发中的FileInputFormat与TextInputFormat
作者:数据分析玩家
在MapReduce程序的开发过程中,往往需要用到FileInputFormat与TextInputFormat,但是这两个类究竟是用来做什么的,在源代码的追踪过程中,我们会发现TextInputFormat这个类继承自FileInputFormat,FileInputFormat这个类继承自InputFormat,而在InputFormat的源代码中:
* Split-up the input file(s) into logical {@link InputSplit}s, each of
* which is then assigned to an individual {@link Mapper}.
通过这段源代码:我们可以大致知道:InputFormat这个类会将文件file按照逻辑进行划分,划分成的每一个split切片将会被分配给一个Mapper任务,而在MapReduce的原理运行中:
我们可以发现确实是这样的,文件先被切分成split块,而后每一个split切片对应一个Mapper任务
下面:我们将对FileInputFormat与TextInputFormat这两个类的具体功能进行阐述
FileInputFormat这个类先对输入文件进行逻辑上的划分,以64M为单位,将原始数据从逻辑上分割成若干个split,每个split切片对应一个Mapper任务
对于FileInputFormat这个类,我们需要注意:FileInputFormat这个类只划分比HDFS的block块大的文件,所以FileInputFormat划分的结果是这个文件或者是这个文件中的一部分.如果一个文件的大小比block块小,将不会被FileInputFormat这个类进行逻辑上的划分,此时每一个小文件都会当做一个split块并分配一个Mapper任务,导致效率低下.这也是Hadoop处理大文件的效率要比处理很多小文件的效率高的原因。
当FileInputFormat这个类将文件file切分成block块之后,TextInputFormat这个类随后将每个split块中的每行记录解析成一个一个的键值对,即<k1,v1>.
综上:我们可以简单理解为FileInputFormat这个类是将文件file切分成split块,而TextInputFormat这个类是负责将每一行记录解析为键值对<k1,v1>.
2016年4月3日21:13:05
相关文章推荐
- LeetCode 之 5 ---- Longest Palindromic Substring
- java静态代理与动态代理
- Weekly Roundup: Nothing
- java第5章学习总结
- java的注解技术介绍
- 数据结构---哈希表(KV模式)(除留余数法)
- Linux who命令
- C++STL之ACM相关知识大全
- Word中利用VBA导入样式
- init程序
- Semaphore控制线程并发数
- 实验六:分析Linux内核创建一个新进程的过程
- 1073 约瑟夫环
- hdu 5274(树链剖分)
- 【java集合框架源码剖析系列】java源码剖析之ArrayList
- 【java集合框架源码剖析系列】java源码剖析之ArrayList
- 为什么DOM操作很慢
- 蛇形矩阵
- LVS-NAT模式实验
- 分类-2-softmax