1

我完全对 hadoop API 感到困惑。(猜它一直在变化)

如果我没记错JobConf的话,deprecated我们应该使用Joband Configurationclasses 来从 java 运行 map reduce 作业。似乎在最近发布的版本hadoop 1.0.0 JobConf中不再被弃用!

所以我正在使用 Job 和配置类来运行 map reduce 作业。现在,我需要根据我的地图输出中的某些值将减速器输出文件放在文件夹结构中。我浏览了几篇文章,发现可以使用OutputFormatClass 来实现这一点,但我们在两个包中都有这个类:

org.apache.hadoop.mapred and 
org.apache.hadoop.mapreduce 

在我们的job对象中,我们可以将输出格式类设置为:

job.setOutputFormatClass(SomeOutputFormat.class);

现在,如果SomeOutputFormat extendsorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat,我们得到一个名为getRecordWriter();this 的方法,它对覆盖输出路径没有任何帮助。

还有另一种使用方法,但在设置类jobConf方面似乎又不起作用。mappers, reducers, partitions, sorting and grouping

有什么很明显的我想念的吗?我想将我的 reduce 输出文件写入一个基于值的文件夹中。例如,SomeOutputPrefix/Value1/Value2/realReduceFileName

谢谢!

4

1 回答 1

0

我认为你需要实施

  1. 您自己的输出格式类和
  2. 你自己的 RecordWriter 将不同的值写入不同的地方

因此,您的 SomeOutputWriter 将new SomeRecordWriter("SomeOutputPrefix")在其getRecordWriter()方法中返回,SomeRecordWriter并将不同的值写入不同的文件夹。

于 2012-02-11T15:14:02.343 回答