在我的MapReduce代码中,在reducer方面我正在实现MultipleOutputs
并且我已将inputsplit附加到它。我想要输出文件名作为我的键值而不是keyvalue-r-00000
。如何删除尾随值。这是我在reducer方面的代码。
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();
}
}
答案 0 :(得分:-1)
根据Javadoc of MultipleOutputs,参数如下
write(KEYOUT key, VALUEOUT value, String baseOutputPath)
这里你的第一个参数应该是键
所以它会是
multipleOutputs.write(key, text1, generateFileName(key));
这对我有用。