有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在reducer输出中从partr00000中删除r00000

在我的MapReduce代码中,我在reducer端实现了MultipleOutputs,并将inputsplit附加到它。我希望输出文件名作为keyvalue,而不是keyvalue-r-00000。如何删除尾随值。这是我在减速机端的代码

String last = map.lastKey();
        String tab2[] = last.split(",");
        String line1 = "[" + tab2[2] + "," + tab2[3] + "," + tab2[8] + "]" + "\n" + "];";
        text1.set(line1);
        multipleOutputs.write(NullWritable.get(), text1, generateFileName(key));
    }

    String generateFileName(Text key){
        return key.toString();      
    }

    @Override
    public void setup(Context con){
        multipleOutputs = new MultipleOutputs<NullWritable, Text>(con);
    }

    @Override
    public void cleanup(final Context context) throws IOException, InterruptedException{
        multipleOutputs.close();
    }
}

共 (1) 个答案

  1. # 1 楼答案

    根据Javadoc of MultipleOutputs,参数如下

    write(KEYOUT key, VALUEOUT value, String baseOutputPath)
    

    这里您的第一个参数应该是key

    是的

    multipleOutputs.write(key, text1, generateFileName(key));
    

    它对我有用