gpt4 book ai didi

hadoop - MultipleOutputs map 减少不起作用

转载 作者:行者123 更新时间:2023-12-02 21:49:23 29 4
gpt4 key购买 nike

我正在尝试将(键和值)写入reducer的不同文件中,但是我只有一个键和值的输出文件。

 public static class Reduce
extends Reducer<Text,Text,Text,Text> {
private MultipleOutputs <Text,Text>mos;
@Override
protected void setup(Context context) throws IOException, InterruptedException {
super.setup(context);
}
public void reduce(Text key, Text values, Context context ) throws IOException, InterruptedException {
mos.write(key.toString(),values, key); }

@Override
protected void cleanup(Context context) throws IOException,
InterruptedException {
super.cleanup(context);
}
}// end Reducer

//驱动程序:包含多个输出
    job.setMapperClass(Map.class);
job.setReducerClass(Reduce.class);
job.setCombinerClass(Reduce.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
// set output key type
job.setOutputKeyClass(Text.class);
// set output value type
job.setOutputValueClass(Text.class);
//set the HDFS path of the input data
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
// set the HDFS path for the output
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
//multiple output files
MultipleOutputs.addNamedOutput(job, "express", TextOutputFormat.class, Text.class, Text.class);

最佳答案

write类的MultipleOutputs方法具有三个签名,如下所示。

write(KEYOUT key, VALUEOUT value, String baseOutputPath) 
Write key value to an output file name.

write(String namedOutput, K key, V value)
Write key and value to the namedOutput.

write(String namedOutput, K key, V value, String baseOutputPath)
Write key and value to baseOutputPath using the namedOutput

似乎您正在使用第二个,但是更改了key和value参数。另外,如果您传递整个值 Iterable,我也不知道此方法的行为。

作为建议,您可以使用第三个签名,该签名更简单,因为您无需调用 addNamedOutput,而只需写入任何 baseOutputPath即可。

例如:
mos.write(key, value, "express");

关于hadoop - MultipleOutputs map 减少不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22369823/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com