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.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.run(MapTask.java:307) 在org.apache.hadoop.mapred.Child.main(Child.java:17
有什么想法吗?
我也尝试过: -mapper'cat'-reducer'/ bin / grep 1938678460'(猫工作,grep没有)
....我还检查了/ bin / grep在那里的所有机器,它是
Grep不起作用,或者我遗失了什么?
答案 0 :(得分:17)
我自己没有尝试过,但如果没有找到某些内容,grep会以非零退出代码退出。如果某个地图不包含您要使用的字符串,则会得到一个非零退出代码,并且hadoop会出错。也许像“/ bin / grep || true”这样的东西可以工作。