2017-09-01 2 views
0

Dans un travail, il y a deux fichiers d'entrée dans les deux répertoires différents. En Hadoop job taking input files from multiple directories, nous pouvons lire les fichiers de plusieurs répertoires. Les fichiers ont le même nom mais ils se trouvent dans des dossiers de noms différents. C1/part-0000 C2/part-0000 Est-il possible que la détection de fichiers en phase de carte?
quelque chose comme: public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { if (First file) { ... context.write(outputKey, outputValue); } } else { //Second file ... context.write(outputKey, outputValue); } } Le travail Hadoop prend les fichiers d'entrée de plusieurs répertoires et détecte chacun d'eux dans la phase de la carte

Répondre

0

Vérifiez en phase d'installation

@Override 
protected void setup(Context context) throws IOException, InterruptedException { 
    FileSplit split = (FileSplit) context.getInputSplit(); 
    Path path = split.getPath(); 
    String name = path.getName(); 
    ... 

Ne pas vérifier dans la méthode de carte pour chaque ligne, parce que chaque cartographe est créé pour 1 scission d'entrée.