Hadoop API:Reducer的OutputFormat
我完全被hadoop API搞糊涂了。(猜它一直在变) 如果我没有记错的话,Hadoop API:Reducer的OutputFormat,hadoop,mapreduce,hadoop-streaming,Hadoop,Mapreduce,Hadoop Streaming,我完全被hadoop API搞糊涂了。(猜它一直在变) 如果我没有记错的话,JobConf被弃用了,我们应该使用Job和Configuration类来从java运行map reduce作业。在最近发布的hadoop1.0.0中,似乎不再有人反对JobConf了 因此,我使用Job和configuration类来运行map reduce作业。现在,我需要将reducers输出文件放在一个文件夹结构中,该文件夹结构基于映射输出的某些值。我浏览了几篇文章,发现使用OutputFormat类可以实现这一
JobConf
被弃用了
,我们应该使用Job
和Configuration
类来从java运行map reduce作业。在最近发布的hadoop1.0.0中,似乎不再有人反对JobConf了
因此,我使用Job和configuration类来运行map reduce作业。现在,我需要将reducers输出文件放在一个文件夹结构中,该文件夹结构基于映射输出的某些值。我浏览了几篇文章,发现使用OutputFormat
类可以实现这一点,但我们将这个类分为两个包:
org.apache.hadoop.mapred and
org.apache.hadoop.mapreduce
在我们的作业
对象中,我们可以将输出格式类设置为:
job.setOutputFormatClass(SomeOutputFormat.class);
现在,如果SomeOutputFormat
扩展了org.apache.hadoop.mapreduce.lib.output.FileOutputFormat
,我们将得到一个名为getRecordWriter()的方法代码>这对覆盖输出路径没有任何帮助
还有另一种方法是使用jobConf
,但在设置mapper、reducer、partitions、排序和分组
类方面似乎同样不起作用
有没有什么很明显的东西我遗漏了?我想将reduce输出文件写入基于值的文件夹中。对于exmaple,SomeOutputPrefix/Value1/Value2/realReduceFileName
谢谢 我认为您需要实施
您自己的输出格式类和
您自己的RecordWriter将在不同的位置写入不同的值
因此,您的SomeOutputWriter将在其getRecordWriter()
方法中返回new SomeRecordWriter(“SomeOutputPrefix”)
,并且SomeRecordWriter
将向不同的文件夹写入不同的值。谢谢DNNX。在这些线路上,但想看看是否有其他更简单的方法。看来这就是方法。必须稍微调整我的分区逻辑才能与record writer正常工作。它成功了。