我完全搞不懂hadoop API。(我猜它一直在变化)
如果我没记错的话,JobConf是deprecated,我们应该使用Job和Configuration类来运行java中的map reduce作业。不过,在最近发布的hadoop 1.0.0中,JobConf似乎不再被弃用!
因此,我使用job和configuration类来运行map reduce作业。现在,我需要将reducers输出文件放在一个基于某些值的文件夹结构中,这些值是我地图输出的一部分。我浏览了几篇文章,发现可以使用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
谢谢!
发布于 2012-02-11 23:14:02
我认为你需要实现
因此,您的SomeOutputWriter将在其getRecordWriter()方法中返回new SomeRecordWriter("SomeOutputPrefix"),并且SomeRecordWriter将把不同的值写入不同的文件夹。
https://stackoverflow.com/questions/9232622
复制相似问题