关于Hadoop MultipleOutput的查询0.20.203



我正在尝试在Reducer中使用MultipleOutputs,以便使用分区器写入多个文件。为此,我尝试在Reducer.setup()中使用如下方法构建它的对象:

public static class MOReduce extends Reducer<Text, Integer, Text, Integer> {
    private MultipleOutputs mos;
    public void setup( Reducer.Context context ) {
        mos = new MultipleOutputs( context.getConfiguration() );
    }

但我面临的问题是因为以下原因:

  • 根据文档,setup函数以Reducer.Context为参数
  • 而根据本文档,MultipleOutputs构造函数需要JobConf。所以,基本上我没有办法从Reducer.Context中提取JobConf
  • 我已经尝试过像Reducer.Context.getConfXXX这样返回JobConf的函数,但只有一个函数getConfiguration()返回JobContext

所以,你能建议我如何解决这个问题并实例化MultipleOutputs对象吗。

看看减速机中的多重输出

hadoop中有两个API用于创建和管理mapreduce作业。一个是与JobConf有关,另一个与Job有关。你似乎在用Job。对于您的情况,如上面的链接所示,您需要创建自己的RecordWriter类和OutputFormat类。使用RecordWriter,您可以控制写入哪些文件以及何时写入。

相关内容

  • 没有找到相关文章