2017-08-17 2 views
0

Dans un programme simple MapReduce, il y a un fichier d'entrée, qui après le fractionnement de chaque ligne, il sera mis en correspondance. Mais maintenant, je veux lire chaque ligne et après la séparation, la ligne, la carte deux fois par des touches différentes. lire une ligne et deux cartes (deux fois en utilisant context.write). J'ai lu: Running two mapper and two reducer for simple hadoop mapreduce jobs Qui a répondu: Il suffit donc de mettre 2 fichiers dans vos répertoires d'entrée afin que vous puissiez obtenir 2 mappeurs en cours d'exécution. Maintenant je devrais mettre deux mêmes fichiers?l'exécution de deux cartographe sur un fichier d'entrée et un réducteur pour les travaux MapReduce Hadoop simples

+0

Je pense que vous pouvez écrire deux classes distinctes Mapper puis utilisez 'MultipleInputs' (disponible uniquement avec' mapred') pour passer vos fichiers à deux cartographes différents. Je n'ai pas essayé donc je ne peux pas dire à coup sûr. – philantrovert

Répondre

0

Il est inutile de lire la ligne dans le mappeur, diviser et passer quelque part. Processus immédiatement:

void map(K key, Text value, Context ctx) { 
    String k1 = getKey1(value); 
    String k2 = getKey2(value); 
    map1(k1, value); 
    map2(k2, value); 
} 

void map1(...) { ... } 
void map2(...) { ... }