2010-09-21 88 views
6

的grep似乎并没有被工作的hadoop streaming的Hadoop流的grep不起作用

为: Hadoop的罐子/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():subprocess failed with code 1 at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:311) at org.apache.hadoop.streaming.PipeMapRed 。 mapRedFinished(PipeMapRed.java:545) at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:132) at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57) at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358) at org.apache.hadoop.mapred.MapTask。运行(MapTask.java:307) at org.apache.hadoop.mapred.Child.main(Child.java:17

任何想法?

我也试过: -mapper '猫' -reducer '/斌/ grep的1938678460'(猫的作品,grep的不)

....我也检查了所有的机器,/斌/ grep的在那里,它是

grep不工作,或者我失去了一些东西?

回答

17

我还没有尝试过这个,但是如果grep没有找到某个东西,grep会退出并返回一个非零的退出代码。如果一个map不包含你grep的字符串,你会得到一个非零的退出代码,并且hadoop会出错。也许像“/ bin/grep || true”的作品。

+10

你在哪里,这个修复实际上修复了它:-jobconf stream.non.zero.exit.is.failure = false – Federico 2010-09-27 15:40:39