Hadoop对输入文件划分(InputFormat)
来源:互联网 发布:长岛的雪 知乎 编辑:程序博客网 时间:2024/04/28 18:13
适用Hadoop很长时间了,从最开始的入门级别的学习到源码的深入剖析,根据设计的还是够味道的。在作业的优化过程中,常常设计到map任务的问题。今天我们就来看看hadoop对原始数据是如何进行划分,最终形成一个一个map任务数据源的。
Hadoop提供了一个InputFormat类,从名字上看该类的作业时将输入格式的话,的确没错,基本上也就是这个意思。老外对类的命名还是很地道的。
InputFormat类描述了当前mapreduce作业的输入规范。mapreduce框架依靠该类主要完成了3件事:
(1)对输入作业进行校验
(2)将输入文件进行逻辑分片,每个分片代表一个单独的mapper任务。首先要强调是逻辑分片,与HDFS中将文件分成Block块存储不同(这是物理分片),第二个每个分片代表一个单独的mapper任务,意思就是有多少个输入分片,就会有多少个mapper任务。
(3)提供了一个RecordReader类实现,将逻辑的输入分片的数据,转换成一条条记录。这个记录包含了我们经常使用的key和value
InputFormat的源码如下:
下面,我们看看具体是如何划分输入切片的。
InputFormat中有一个默认的抽象类FileInputFormat,该类实现了getSplit()方法。分片的大致思想如下:
(1)获取所有的文件,每一个文件有FileStatus表示
(2)对每一文件进行遍历,首先计算出输入切片大小,然后对该文件进行划分
(3)如果该文件使用了压缩算法,不可以划分,此时该文件将会作为一个输入片处理
核心代码如下:
以上是对输入数据进行划分切片具体实现,在切片的过程中可以重新覆盖isSplitable()方法,同时可以设置PathFilter方法,对文件进行过滤。本类中默认有PathFilter方法,对隐藏文件进行过滤。
- Hadoop对输入文件划分(InputFormat)
- 自定义 hadoop MapReduce InputFormat 切分输入文件
- 自定义 hadoop MapReduce InputFormat 切分输入文件
- 自定义 hadoop MapReduce InputFormat 切分输入文件
- 自定义 hadoop MapReduce InputFormat 切分输入文件
- 自定义 hadoop MapReduce InputFormat 切分输入文件
- 自定义hadoop map/reduce输入文件切割InputFormat
- 自定义hadoop map/reduce输入文件切割InputFormat
- 自定义hadoop map/reduce输入文件切割InputFormat
- 自定义hadoop map/reduce输入文件切割InputFormat
- Hadoop自定义InputFormat以实现多文件输入 MultiFileInputFormat
- 自定义Hadoop Map/Reduce输入文件切割InputFormat
- Hadoop InputFormat浅析--hadoop如何分配输入
- 自定义hadoop map/reduce输入文件切割InputFormat 更改输入value的分隔符
- 自定义hadoop map/reduce输入文件切割InputFormat 更改输入value的分隔符
- hadoop各种输入方法(InputFormat)汇总
- Hadoop:自定义输入文件格式类InputFormat
- hadoop自定义输入格式(InputFormat)
- 金庸武侠小说之我的见解
- 说说KVM的API
- 中国汽车工业工程有限公司简介
- 注意
- 实例学习gcc+gdb+make
- Hadoop对输入文件划分(InputFormat)
- 机房收费系统(一)——组合查询
- 学习FPGA的网站推荐
- Matlab基础学习------------数组和矩阵
- 《数据结构实验4》--查找
- 配置ssh公钥访问oschina
- 超级楼梯
- 使用接插件需要注意的问题
- 软考---21天复习心得