私のレデューサー出力ファイルの名前を正しく変更できますが、r-00000は依然として永続しています。 私のレデューサークラスでMultipleOutputsを使用しました。 ここにその詳細があります。何が紛失しているのか、何が余計に必要なのかわからないのですか?mapreduceのレデューサー出力からr-00000エクステンションを削除するには
public class MyReducer extends Reducer<NullWritable, Text, NullWritable, Text> {
private Logger logger = Logger.getLogger(MyReducer.class);
private MultipleOutputs<NullWritable, Text> multipleOutputs;
String strName = "";
public void setup(Context context) {
logger.info("Inside Reducer.");
multipleOutputs = new MultipleOutputs<NullWritable, Text>(context);
}
@Override
public void reduce(NullWritable Key, Iterable<Text> values, Context context)
throws IOException, InterruptedException {
for (Text value : values) {
final String valueStr = value.toString();
StringBuilder sb = new StringBuilder();
sb.append(strArrvalueStr[0] + "|!|");
multipleOutputs.write(NullWritable.get(), new Text(sb.toString()),strName);
}
}
public void cleanup(Context context) throws IOException,
InterruptedException {
multipleOutputs.close();
}
}
この質問は重複していると思われます。 http://stackoverflow.com/questions/27488624/how-to-change-the-output-file-name-from-part-00000-in- reducer-to-inputfile-name –
generateFileName()メソッドをオーバーライドしましたが、r-0000拡張子を削除できませんでした。 – SUDARSHAN