2010-09-21 4 views
6

Grep ne semble pas travailler pour le streaming HadoopHadoop le streaming grep ne fonctionne pas

Pour: pot Hadoop /usr/local/hadoop-0.20.2/contrib/streaming/hadoop-0.20.2-streaming. jar -input /user/root/tmp2/user.data -output/utilisateur/root/selected_data -mapper '/ bin/grep 1938678460' -reducteur 'wc' -jobconf mapred.output.compress = faux

Je reçois : java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): sous-processus a échoué avec le code 1 à org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads (PipeMapRed.java:311) à org.apache.hadoop.streaming.PipeMapRed . mapRedFinished (PipeMapRed.java:545) à org.apache.hadoop.streaming.PipeMapper.close (PipeMapper.java:132) à org.apache.hadoop.mapred.MapRunner.run (MapRunner.java:57) à org.apache.hadoop.streaming.PipeMapRunner.run (PipeMapRunner.java:36) à org.apache.hadoop.mapred.MapTask.runOldMapper (MapTask.java:358) à org.apache.hadoop.mapred.MapTask. exécuter (MapTask.java:307) à org.apache.hadoop.mapred.Child.main (Child.java:17

Une idée?

J'ai aussi essayé: -mapper 'cat' -REDUCER '/ bin/grep 1938678460' (fonctionne cat, grep ne)

.... J'ai aussi vérifié sur toutes les machines/bin/grep est là et il est

Grep ne fonctionne pas, ou il me manque quelque chose?

Répondre

17

Je ne l'ai pas essayé moi-même, mais grep se termine avec un code de sortie différent de zéro s'il n'a pas trouvé quelque chose. Si une carte ne contient pas la chaîne pour laquelle vous faites une grep, vous obtenez un code de sortie différent de zéro et une erreur hadoop. Peut-être que quelque chose comme "/ bin/grep || true" fonctionne.

+10

vous où droit et ce correctif l'a réellement fixé: -jobconf stream.non.zero.exit.is.failure = false – Federico

Questions connexes