关闭

Hadoop控制输出文件命名

200人阅读 评论(0) 收藏 举报
分类:

原文地址:http://blog.csdn.net/zuochanxiaoheshang/article/details/8769198

点击阅读原文


---------------------------------------------------

Hadoop 控制输出文件命名
在一般情况下,Hadoop 每一个 Reducer 产生一个输出文件,文件以
part-r-00000、part-r-00001 的方式进行命名。如果需要人为的控制输出文件的命
名或者每一个 Reducer 需要写出多个输出文件时,可以采用 MultipleOutputs 类来
完成。MultipleOutputs 采用输出记录的键值对(output Key 和 output Value)或者
任意字符串来生成输出文件的名字,文件一般以 name-r-nnnnn 的格式进行命名,
其中 name 是程序设置的任意名字;nnnnn 表示分区号。
MultipleOutputs 的使用方式 的使用方式: :: :
想要使用 MultipeOutputs,需要完成以下四个步骤:
1. 在 Reducer 中声明 MultipleOutputs 的变量
private MultipleOutputs<NullWritable, Text> multipleOutputs;
2. 在 Reducer 的 setup 函数中进行 MultipleOutputs 的初始化
protected void setup(Context context)throws IOException, InterruptedException {
multipleOutputs = new MultipleOutputs<NullWritable, Text>(context);
}

3. 在 reduce 函数中进行输出控制
protected void reduce(Text key, Iterable<Text> values, Context context)throws IOException,
InterruptedException {
for (Text value : values) {
multipleOutputs.write(NullWritable.get(), value, key.toString());
}
}

4. 在 cleanup 函数中关闭输出 MultipleOutputs
protected void cleanup(Context context)throws IOException, InterruptedException {
multipleOutputs.close();
}

注意:multipleOutputs.write(key, value, baseOutputPath)方法的第三个函数表明了该输出所在的目录(相对于用户指定的输出目录)。如果baseOutputPath不包含文件分隔符“/”,那么输出的文件格式为baseOutputPath-r-nnnnnname-r-nnnnn);如果包含文件分隔符“/”,例如baseOutputPath=029070-99999/1901/part”,那么输出文件则为




0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

通过Hadoop Shell命令进行导入导出操作

HDFS提供了Shell命令来访问他的大多数功能
  • sn_gis
  • sn_gis
  • 2014-06-10 22:29
  • 1704

hadoop 在eclipse中输出日志

import java.io.File; import java.io.IOException; import java.util.StringTokenizer; import org.apach...
  • earbao
  • earbao
  • 2014-07-04 11:19
  • 2026

MapReduce中自定义文件输出名

MR的输出结果默认为part-r-00000,我们可自定义易识别的名字替代part,如score-r-00000 job.setOutputFormatClass(MyOut.class); ...
  • ukakasu
  • ukakasu
  • 2015-08-05 19:50
  • 2244

hadoop文件输出控制,多路径输出到不同文件

hadoop的map和reduce的输出路径是通过两个函数设定: FileInputFormat.setInputPaths(job, args[0]); FileOutputFormat.s...
  • whb123andy
  • whb123andy
  • 2013-12-05 11:23
  • 1482

hadoop文件输出控制,多路径输出到不同文件

hadoop的map和reduce的输出路径是通过两个函数设定: FileInputFormat.setInputPaths(job, args[0]); FileOutputFormat.setOu...
  • longshenlmj
  • longshenlmj
  • 2013-06-07 21:10
  • 7964

hadoop多文件输出

hadoop多文件输出
  • u011561690
  • u011561690
  • 2014-11-27 20:53
  • 842

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

有时候,我们使用Hadoop处理数据时,在Reduce阶段,我们可能想对每一个输出的key进行单独输出一个目录或文件,这样方便数据分析,比如根据某个时间段对日志文件进行时间段归类等等。这时候我们就可以...
  • qiaochao911
  • qiaochao911
  • 2014-05-06 14:01
  • 1128

hadoop文件输出为txt格式

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish )。   Hadoop默认的输出是TextOutputFormat,输出文件名不可...
  • xugen12
  • xugen12
  • 2015-11-18 20:52
  • 1057

Hadoop Streaming 实战: 输出文件分割

我们知道,Hadoop streaming框架默认情况下会以'/t’作为分隔符,将每行第一个'\t’之前的部分作为key,其余内容作为value,如果没有'\t’分隔符,则整行作为key;这个key/...
  • jiedushi
  • jiedushi
  • 2012-03-26 13:10
  • 4669

【hadoop蜜汁问题解决】Multioutputs按照key输出多个文件

每当碰到一个很久都没有解决的bug时,总是开始怀疑人生,而且还各种百度不到,那就更加痛不欲生,尤其是这种大项目,看源代码太累了。 所以一旦解决了,一定要趁热乎的时候赶紧记录下来,不管用的是哪种谜一样...
  • u012236368
  • u012236368
  • 2016-04-17 00:17
  • 584
    个人资料
    • 访问:495883次
    • 积分:8683
    • 等级:
    • 排名:第2597名
    • 原创:376篇
    • 转载:198篇
    • 译文:0篇
    • 评论:32条