我对hadoop API感到困惑。 (猜猜它一直在变化)
如果我没有错,JobConf
是deprecated
,我们应该使用Job
和Configuration
类代替从java运行map reduce作业。虽然最近发布的hadoop 1.0.0
JobConf
似乎不再被弃用!
所以我使用Job和配置类来运行map reduce作业。现在,我需要根据作为地图输出一部分的某些值将Reducer输出文件放在文件夹结构中。我浏览了几篇文章,发现用OutputFormat
类可以实现这一点,但我们在两个包中有这个类:
org.apache.hadoop.mapred and
org.apache.hadoop.mapreduce
在我们的job
对象中,我们可以将输出格式类设置为:
job.setOutputFormatClass(SomeOutputFormat.class);
现在,如果SomeOutputFormat
extends
说org.apache.hadoop.mapreduce.lib.output.FileOutputFormat
,我们会得到一个名为getRecordWriter();
的方法,这无论如何都无法覆盖输出路径。
使用jobConf
还有另一种方法,但在设置mappers, reducers, partitions, sorting and grouping
类方面似乎无效。
有什么东西非常明显,我错过了吗?我想在一个基于值的文件夹中编写我的reduce输出文件。例如,SomeOutputPrefix/Value1/Value2/realReduceFileName
谢谢!
答案 0 :(得分:0)
我认为你需要实施
因此,您的SomeOutputWriter将在其new SomeRecordWriter("SomeOutputPrefix")
方法中返回getRecordWriter()
,而SomeRecordWriter
会将不同的值写入不同的文件夹。