输入
- 类FileInputFormat
FileInputFormat是所有使用文件作为数据源的InputFormat实现的基类。
1,1基本的输入
通过addInputPath(s)和setInputPath(s)四种静态方法设置输入路径。
1,2有选择的输入
如果需要排除特定文件,可以使用setInputPathFilter()方法设置一个过滤器。
注:FileInputFormat会使用一个默认的过滤器来排除隐藏文件(名称中以“.”和“_”开头的文件)。如果通过调用setInputPathFilter()设置过滤器,将会在默认过滤器的基础上进行过滤。
1,3类FileInputFormat的输入分片
分片的大小计算公式:max(minimumSize,min(maximumSize,blockSize))。
默认情况下:maximumSize=Long.Max_Value
MinimumSize=1
MinimuSize < blockSize < maximumSize
因此,分片的大小=blockSize
1,4避免切分输入文件
方法一:增加最小分片大小minimumSize,使其大于要处理的最大文件的大小。
方法二:使用FileInputFormat的具体子类,并冲在isSplitable(),将返回值设为false。例子如下。
public class NonSplittableTextInputFormat extends TextInputFormat{ @override protected boolean isSplitable(FileSystem fs, Path file){ return false; } }
- 类TextInputFormat(默认的InputFormat)
每条记录是一行输入。Key:LongWritable,存储该行在当前分片中的字节偏移量;Val:这行的内容,不包括行终止符(换行符和回车符)
- 类KeyValueTextInputFormat
Hadoop默认的输出时TextOutputFormat,由\t分隔。使用该类,可以直接确定key和val。可以通过key.value.separator.in.input.line属性来指定分隔符,默认是\t。
- 类SequenceFileInputFormat
该类不仅可以读SequenceFile,而且可以读MapFile。如果在处理顺序文件时遇到目录,则会自动认为正在读MapFile,使用的是其数据文件。
- 多种输入MultipleInputs
如果需要同时对多种的数据源进行处理,可以使用MultipleInputs,并可以设置每个数据源的Map处理函数。例子如下:
MultipleInputs.addInputPath(conf, dataset1,TextInputFormat.class,MyMapper1.class); MultipleInputs.addInputPath(conf, dataset2,TextInputFormat.class,MyMapper2.class);
其中,dataset1和dataset2的数据都是文本文件,所以两者都使用TextInputFormat,但是他们的行格式不同,所以指定了两个Mapper。但是需要注意,两个Mapper的输出类型必须一样,因此reduce看到的是聚集后的map输出。
该类还有一个重载版本的addInputPath()方法,它没有mapper参数,如果有多种输入格式而只有一个mapper,可以直接使用该重载方法,并在main中用setMapperClass指定Mapper。
<!--[if !supportLists]-->六、<!--[endif]-->数据库输入(数据库和HBase),类DBInputFormat
输出
- 类TextOutputFormat
这是默认的输出格式。
可以通过设置mapred.textoutputformat.separator属性改变默认的分隔符。与TextOutputFormat对应的输入格式是KeyValueTextInputFormat。
- 类SequenceFileOutputFormat
- 类MapFileOutputFormat
该类把MapFile作为输出。MapFile中的键必须顺序添加,因此必须确保reducer输出的键已经排好序。
- 类MultipleOutputFormat和类MultipleOutput(多个输出)
4,1 MultipleOutputFormat是个抽象类,有两个实体子类:MultipleTextOutputFormat和MultipleSequenceFileOutputFormat类。该抽象类提供了一些子类覆盖来控制输出文件名的Protected方法。例子如下:
static class MyMultipleOut extends MultipleTextOutFormat<NullWritable,Text>{ //NullWritable,Text为输出的key和val类型 Protected String generateFileNameForKeyValue(NullWritable key, Text value, String name){ //返回的文件名是相对于输出路径的。 return parse(value); } }
最后,在main中设置setOutputFormat(MyMulitpleOut.class)。
MultipleOutputFormat还有很多特性,如为只有map的作业进行复制输入目录结构和文件命名等能力。
4,2 MultipleOutputs
注意:MultipleOutputs只能包含字母字符。具体用法参见《hadoop权威指南》P221.
注:在新版的MapReduceAPI中,只有MultipleOutputs,它支持这两种多输出类的所有特征。
- 数据库输出(数据库和HBase)
相关推荐
mapreduce的工作机制:mapreduce的类型和格式;mapreduce的特性:如何安装hadoop集群,如何管理hadoop;pig简介:hbase简介:zookeeper简介,最后还提供了丰富的案例分析。 本书是hadoop权威参考,程序员可从中...
第7章 MapReduce的类型与格式 MapReduce的类型 默认的MapReduce作业 输入格式 输入分片与记录 文本输入 二进制输入 多种输入 数据库输入(和输出) 输出格式 文本输出 二进制输出 多个输出 ...
hadoop权威指南4和源码hadoop权威指南4和源码hadoop权威指南4和源码hadoop权威指南4和源码
Hadoop权威指南中文版(完全版)Hadoop权威指南中文版(完全版)Hadoop权威指南中文版(完全版)Hadoop权威指南中文版(完全版)
Hadoop权威指南
《Hadoop高级编程——构建与实现大数据解决方案》本书关注用于构建先进的、基于Hadoop的企业级应用的架构和方案,并为实现现实的解决方案提供深入的、代码级的讲解。本书还会带你领略数据设计以及数据设计如何影响...
Hadoop权威指南 第四版 修订版&升级版 中文版 pdf格式。大家放心,绝对是中文版,不骗人。原文件很大,稍压缩了一下,页面依然非常清晰。无水印。共732页。 Tom White 著,王海 等译,清华大学出版社,2017年7月第4...
本文带来的资源是hadoop权威指南第四版中文版,适合hadoop深入学习
Hadoop快速入门——第四章、zookeeper安装包
Hadoop权威指南----读书笔记
hadoop权威指南中文版 云计算 java hive hbase mapreduce hdfs
Hadoop高级编程——构建与实现大数据解决方案.rar
为方便大家开发研究用,特上传《hadoop权威指南》第二章的气象数据文件
Hadoop编程书籍,由浅入深,介绍Hadoop编程,特别适合初学者以及企业开发人员以及大学生以及其他深造学习者
第7章 MapReduce的类型与格式 MapReduce的类型 默认的MapReduce作业 输入格式 输入分片与记录 文本输入 二进制输入 多种输入 数据库输入(和输出) 输出格式 文本输出 二进制输出 多个输出 延迟输出 数据库输出 第8...
hadoop权威指南第四版高清 pdf下载 hadoop权威指南第四版高清 pdf下载
绝对第四版!绝对中文!绝对完整!绝对第四版!绝对中文!绝对完整! Hadoop权威指南 大数据 第四版 修订版&升级版 中文版 pdf格式。Tom White 著,王海 等译,清华大学出版社,最新第4版。
Hadoop权威指南(中文版)(带书签 Hadoop权威指南(中文版)(带书签 Hadoop权威指南(中文版)(带书签 Hadoop权威指南(中文版)(带书签
hadoop权威指南代码 (Hadoop: The Definitive Guide code) http://www.hadoopbook.com
本文带来的资源是hadoop权威指南第四版中文版以及配套的源码,内容以Hadoop2.x为主,包含一些hadoop的stable版本的新特性,与之前 的版本相比增加了介绍YARN , Parquet , Flume, Crunch , Spark的章节适合于Hadoop ...