Hadoop Output Format

1. Hadoop输出格式 – 目标

Hadoop输出格式检查作业的输出规范。它确定如何使用RecordWriter实现将输出写入输出文件。 我们学习什么是Hadoop输出格式,什么是Hadoop RecordWriter,以及Hadoop中如何使用RecordWriter?还将讨论Hadoop中的各种类型的输出格式,如textOutputFormat,sequenceFileOutputFormat,mapFileOutputFormat,sequenceFileAsBinaryOutputFormat,DBOutputFormat,LazyOutputForma和MultipleOutputs。

2. 什么是Hadoop输出格式?

在我们开始使用MapReduce中的Hadoop输出格式之前,让我们先看看MapReduce中的RecordWriter是什么,它在MapReduce中的作用是什么?

2.1 Hadoop RecordWriter

正如我们所知,Reducer将输入由映射器产生的一组中间键值对并在其上运行reducer函数以生成输出,该输出又是零个或多个键 – 值对。

RecordWriter将Reducer阶段的这些输出键值对写入输出文件。

2.2  Hadoop输出格式

如上所述,Hadoop RecordWriter从Reducer获取输出数据并将此数据写入输出文件。这些输出键值对由RecordWriter写入输出文件的方式由输出格式决定。OutputFormat和InputFormat函数是相同的。 Hadoop提供的OutputFormat实例用于写入HDFS或本地磁盘上的文件。 OutputFormat描述Map-Reduce作业的输出规范。在输出规格的基础上;

MapReduce作业检查输出目录是否已经存在。

OutputFormat提供了RecordWriter实现,用于输出作业的输出文件。输出文件存储在FileSystem中。

FileOutputFormat.setOutputPath()方法用于设置输出目录。每个Reducer在一个公共输出目录中写入一个单独的文件。

3. Hadoop输出格式的类型

3.1 TextOutputFormat

MapReduce默认的Hadoop reducer输出格式是TextOutputFormat,它在文本文件的各行上写入(键,值)对,其键和值可以是任何类型,因为TextOutputFormat通过调用toString()将它们转换为字符串。每个键值对都由一个制表符分隔,可以使用MapReduce.output.textoutputformat.separator属性更改该制表符。 KeyValueTextOutputFormat用于读取这些输出文本文件,因为它基于可配置的分隔符将行分割为键值对。

3.2 SequenceFileOutputFormat

它是一种输出格式,它为输出写入序列文件,它是MapReduce作业之间的中间格式使用,可将任意数据类型快速序列化到文件;并且相应的SequenceFileInputFormat会将该文件反序列化为相同的类型,并以与之前的Reducer发出的相同的方式将数据呈现给下一个映射器,因为它们是紧凑且易于压缩的。压缩由SequenceFileOutputFormat上的静态方法控制。

3.3  SequenceFileAsBinaryOutputFormat

它是SequenceFileInputFormat的另一种形式,它以二进制格式将键和值写入序列文件。

3.4  MapFileOutputFormat

它是Hadoop输出格式中FileOutputFormat的另一种形式,用于将输出写为map文件。 MapFile中的键必须按顺序添加,因此我们需要确保Reducer按排序顺序发出键。

3.5 MultipleOutputs

它允许将数据写入文件,文件的名称来自输出键和值,或者来自任意字符串。

3.6 LazyOutputFormat

有时FileOutputFormat会创建输出文件,即使它们是空的。 LazyOutputFormat是一个包装OutputFormat,它确保只有在为给定分区发出记录时才会创建输出文件。

3.7 DBOutputFormat

Hadoop中的DBOutputFormat是用于写入关系数据库和HBase的输出格式。它将reduce输出发送到SQL表。它接受键值对,其中键的类型为扩展DBwritable。

Hadoop Output Format

发表评论

电子邮件地址不会被公开。 必填项已用*标注

× 五 = 三十 五