En plus de ma réponse précédente, j'ai une autre réponse pour vous que j'essayais il y a quelques minutes. Vous pouvez utiliser CustomOutputFormat qui ressemble au code donné ci-dessous
public class VictorOutputFormat extends FileOutputFormat<StudentKey,PassValue> {
@Override
public RecordWriter<StudentKey,PassValue> getRecordWriter(
TaskAttemptContext tac) throws IOException, InterruptedException {
//step 1: GET THE CURRENT PATH
Path currPath=FileOutputFormat.getOutputPath(tac);
//Create the full path
Path fullPath=new Path(currPath,"Aniruddha.txt");
//create the file in the file system
FileSystem fs=currPath.getFileSystem(tac.getConfiguration());
FSDataOutputStream fileOut=fs.create(fullPath,tac);
return new VictorRecordWriter(fileOut);
}
}
Regardez juste la quatrième ligne à partir de la dernière. J'ai utilisé mon propre nom comme nom de fichier de sortie et j'ai testé le programme avec 15 réducteurs. Le fichier reste toujours le même. Il est donc possible d'obtenir un seul fichier de sortie au lieu de deux ou plus, mais pour être très clair, la taille du fichier de sortie ne doit pas dépasser la taille de la mémoire primaire, c'est-à-dire que le fichier de sortie doit tenir dans la mémoire de la machine de base, sinon il pourrait y avoir un problème avec la division du fichier de sortie. Merci !