MapReduce的输入处理类
来源:互联网 发布:新手光束灯编程教学 编辑:程序博客网 时间:2024/05/17 03:45
MapReduce输入的处理类
FileInputFormat是所有以文件作为数据源的InputFormat实现的基类,FileInputFormat保存作为job输入的所有文件,并
实现了对输入文件计算splits的方法。至于获得记录的方法是有不同的子类——TextInputFormat进行实现的。
InputFormat 负责处理MR的输入部分.
有三个作用:
验证作业的输入是否规范.
把输入文件切分成InputSplit.
提供RecordReader 的实现类,把InputSplit读到Mapper中进行处理.
在执行mapreduce之前,原始数据被分割成若干split,每个split作为一个map任务的输入,在map执行过程中split会被
分解成一个个记录(key-value对),map会依次处理每一个记录。
◆ FileInputFormat只划分比HDFS block大的文件,所以FileInputFormat划分的结果是这个文件或者是这个文件中的
一部分.
◆ 如果一个文件的大小比block小,将不会被划分,这也是Hadoop处理大文件的效率要比处理很多小文件的效率高
的原因。
◆ 当Hadoop处理很多小文件(文件大小小于hdfs block大小)的时候,由于FileInputFormat不会对小文件进行划
分,所以每一个小文件都会被当做一个split并分配一个map任务,导致效率底下。
例如:一个1G的文件,会被划分成16个64MB的split,并分配16个map任务处理,而10000个100kb的文件会被
10000个map任务处理。
◆ TextInputformat是默认的处理类,处理普通文本文件。
◆ 文件中每一行作为一个记录,他将每一行在文件中的起始偏移量作为key,每一行的内容作为value。
◆ 默认以\n或回车键作为一行记录。
◆ TextInputFormat继承了FileInputFormat。
MapReduce其他输入类
◆ DBInputFormat
◆ CombineFileInputFormat
相对于大量的小文件来说,hadoop更合适处理少量的大文件。
CombineFileInputFormat可以缓解这个问题,它是针对小文件而设计的。
◆ KeyValueTextInputFormat
当输入数据的每一行是两列,并用tab分离的形式的时候,KeyValueTextInputformat处理这种格式的文件非常适
合。
◆ NLineInputformat NLineInputformat可以控制在每个split中数据的行数。
输入类——NLineInputformat
在启动job之前需设置:
//设置具体输入处理类job.setInputFormatClass(NLineInputFormat.class);//设置每个split的行数NLineInputFormat.setNumLinesPerSplit(job, Integer.parseInt(args[2]));
输入类—KeyValueTextInputFormat
如果行中有分隔符,那么分隔符前面的作为key,后面的 作为value;如果行中没有分隔符,那么整行作为key,value
为空
job.setInputFormatClass(KeyValueTextInputFormat.class);
//默认分隔符就是制表符
//conf.setStrings(KeyValueLineRecordReader.KEY_VALUE_SEPERATOR, "\t");
需要注意使用KeyValueTextInputFormat时,mapper函数的形参K1 V1的类型都是Text。
◆ SequenceFileInputformat
当输入文件格式是sequencefile的时候,要使用SequenceFileInputformat作为输入。
- MapReduce输入的处理类
- MapReduce的输入处理类
- MapReduce对输入多文件的处理
- MapReduce对输入多文件的处理
- MapReduce-输入数据整块处理
- MapReduce对输入多文件的处理2自定义FileInputFormat类
- MapReduce类的输入文件的格式
- Mapreduce的输入格式
- Mapreduce的输入格式
- mapreduce处理中文输入和输出
- mapreduce的输入格式详解
- MapReduce 的格式输入----NLineInputFormat
- Mapreduce 处理gbk文件的方式(输入gbk文件和输出gbk文件)
- Mapreduce作业的处理流程
- Hadoop源码分析1 MapReduce的输入
- 多种输入的MapReduce程序实例
- MapReduce 的格式输入----SequenceFileInputFormat ---源码分析
- MapReduce的输入格式---KeyValueTextInputFormat---源码分析
- 机器学习
- c++获取本机ip地址
- 用重载运算符做String
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- Nginx安装部署
- MapReduce的输入处理类
- SIFT程序资源
- windows程序设计之添加菜单
- Javaweb 将excel文件内信息传入数据库中 并查询
- 【数学建模知识】常微分方程数值解:欧拉公式
- 从零开始学安卓
- MTK手机充电原理分析及问题总结
- 工作一年,你离理想更近了吗?
- 专利权利要求书写法