2010-09-21 13 views
6

Grep no parece estar funcionando para los flujos hadoopHadoop en streaming grep no funciona

Por: hadoop /usr/local/hadoop-0.20.2/contrib/streaming/hadoop-0.20.2-streaming frasco. jar -input /user/root/tmp2/user.data -output/user/root/selected_data -mapper '/ bin/grep 1938678460' -reducer 'wc' -jobconf mapred.output.compress = falso

Me sale : java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): el subproceso fracasaron con el código 1 en org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads (PipeMapRed.java:311) en org.apache.hadoop.streaming.PipeMapRed . mapRedFinished (PipeMapRed.java:545) en org.apache.hadoop.streaming.PipeMapper.close (PipeMapper.java:132) en org.apache.hadoop.mapred.MapRunner.run (MapRunner.java:57) en org.apache.hadoop.streaming.PipeMapRunner.run (PipeMapRunner.java:36) en org.apache.hadoop.mapred.MapTask.runOldMapper (MapTask.java:358) en org.apache.hadoop.mapred.MapTask. ejecutar (MapTask.java:307) en org.apache.hadoop.mapred.Child.main (Child.java:17

¿Alguna idea?

También probé: -mapper 'gato' -reducer '/ bin/grep 1938678460' (gato funciona, grep no)

.... También controlar en todas las máquinas que/bin/grep está ahí y es

Grep no funciona, o me falta algo?

Respuesta

17

No he probado esto por mi cuenta, pero grep sale con un código de salida distinto de cero si no encuentra algo. Si un mapa no contiene la cadena por la que grep, obtiene un código de salida distinto de cero y hadoop will error. Tal vez algo como "/ bin/grep || true" funciona.

+10

estaba en lo correcto y esta solución realmente lo solucionó: -jobconf stream.non.zero.exit.is.failure = false – Federico