Bonjour à tous, je viens vers vous car j'ai un petit souci avec un programme MapReduce.
J'ai installé un environnement Hadoop sur une machine linux (avec Hive et HBase entre autres).
Après avoir farfouillé un peu partout sur le net, j'ai réussi à faire un programme mapreduce, qui fonctionne globalement bien.
Lorsque je lance le mapreduce, je lui donne en argument un nom de fichier du type :
hadoop jar /tmp/mapreduce.jar --inputfile "file:///tmp/input_data.txt"
ce fichier (input_data.txt) contient donc plusieurs lignes disons par exemple :
1 2 3 4
|
1,ligne1_col1,ligne1_col2
2,ligne2_col1,ligne2_col2
3,ligne3_col1,ligne3_col2 |
Donc le mapreduce lit et traite chacune de ces 3 lignes sans aucun soucis.
En revanche, lorsque je décide d'utiliser un fichier de type "pipe" (créé avec mkfifo) :
hadoop jar /tmp/mapreduce.jar --inputfile "file:///tmp/pipe"
là le mapreduce se met en attente du transfert des données, donc tout va bien jusqu'ici, et donc ensuite dans un autre shell je fais :
cat /tmp/input_data.txt > /tmp/pipe
le mapreduce me traite uniquement la 1ère ligne des données envoyées dans le pipe, comme si le mapreduce stoppait le flux au 1er retour à la ligne ou quelque chose du genre.
Si quelqu'un à idée ou une piste, ça serait cool !
Merci d'avance,
Stéphane
Partager