Hadoop流grep不起作用

Fed*_*ico 6 streaming hadoop

Grep似乎不适用于hadoop流媒体

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

我得到:java.lang.RuntimeException:PipeMapRed.waitOutputThreads():子进程失败,代码为1,位于org.apache.hadoop.streaming.PipeMapRed的org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:311). org.apache上的org.apache.hadoop.streamred.PipeMapper.close(PipeMapper.java:132)中的mapRedFinished(PipeMapRed.java:545)位于org.apache的org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)位于org.apache.hadoop.mapred.MapTask.run(MapTask.java)的org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)中的.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36) :307)在org.apache.hadoop.mapred.Child.main(Child.java:17

任何的想法?

我也尝试过:-mapper'cat'-reducer'/ bin/grep 1938678460'(猫工作,grep没有)

....我还检查了/ bin/grep在那里的所有机器,它确实存在

Grep不起作用,或者我遗失了什么?

xin*_*nit 17

我自己没有尝试过,但如果没有找到某些东西,grep会以非零退出代码退出.如果某个地图不包含您要使用的字符串,则会得到一个非零退出代码,并且hadoop会出错.也许像"/ bin/grep || true"这样的东西可行.

  • 你在哪里,这个修复实际上修复了它:-jobconf stream.non.zero.exit.is.failure = false (10认同)