Hadoop 多文件输出 MultipleOutputFormat

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop 多文件输出 MultipleOutputFormat相关的知识,希望对你有一定的参考价值。

FileOutputFormat 及其子类产生的文件放在输出目录下。一个 reducer 就会输出一个文件,文件名称的输出格式为 name-r-nnnnn,例如 part-r-00000

  • name 是由程序设定的任意名字,默认为 part
  • nnnnn 是一个指名块号的整数(从0开始)。块号保证从不同块(mapper 或者 reducer)写的输出在相同名字情况下不会冲突。

有时可能要对输出的文件名进行控制或让每个 reducer 输出多个文件。MapReduce 为此提供了 MultipleOutputFormat 类。MultipleOutputFormat 类可以将数据写到多个文件,可以根据输出键和值或者任意字符串来重命名这些文件或者目录。

1. 重定义输出文件

我们可以对输出的文件名进行控制。考虑这样一个需求:我们需要按照单词首字母输出来区分 WordCount 程序的输出。这个需求可以使用 MultipleOutputs 来实现:

public class MultipleOutputsExample  extends Configured implements Tool 

以上是关于Hadoop 多文件输出 MultipleOutputFormat的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Hadoop的MultipleOutputs进行多文件输出

如何自定义一个hadoop mapreducer中reducer输出的时候以csv文件输出。

仅将 Hadoop MapReduce 输出写入 2 个平面文件

hadoop 多文件夹输入,map到reduce怎样排序

KETTLE-Hadoop文件数据抽取及输出

直接使用FileSystem以标准输出格式显示hadoop文件系统中的文件