Hadoop API : OutputFormat for Reducer

标签 hadoop mapreduce hadoop-streaming

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

如果我没记错的话,JobConf 已被弃用,我们应该使用JobConfiguration 类而不是从 java 运行 map reduce 作业。似乎最近发布的 hadoop 1.0.0 JobConf 不再被弃用!

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

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

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

job.setOutputFormatClass(SomeOutputFormat.class);

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

还有另一种使用jobConf 的方法,但在设置映射器、缩减器、分区、排序和分组 类方面似乎也不起作用。

有什么非常明显的东西是我遗漏的吗?我想将我的 reduce 输出文件写在一个基于值的文件夹中。例如,SomeOutputPrefix/Value1/Value2/realReduceFileName

谢谢!

最佳答案

我认为你需要实现

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

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

关于Hadoop API : OutputFormat for Reducer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9232622/

相关文章:

hadoop - 关于健康 cloudera hadoop(网络接口(interface)速度)

hadoop - 将 rdd 从 spark 写入 Elastic Search 失败

file - Hadoop:将文件或文件路径发送到映射缩减作业

python - hadoop 2.4.0 使用 TAB 作为分隔符的流式通用解析器选项

hadoop - Oozie工作流程示例

configuration - Hadoop写入目录

hadoop - 有什么办法可以在GCP中向工作流程添加hadoop管道作业

java - 如何解决org.apache.hadoop.io.LongWritable无法转换为org.apache.hadoop.io.Text

javascript - MongoDB 中的reduce 函数出现奇怪的数值错误

hadoop - 如何将 Hadoop 目录压缩为单个 gzip 文件?