参加大数据竞赛时使用Python + Hadoop 进行MapReduce 遇到该问题 在stackoverflow上找到了解决方式 和大家分享一下
原文地址:http://stackoverflow.com/questions/4460522/hadoop-streaming-job-failed-error-in-python
错误的是这样的
ava.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 2
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.run(MapTask.java:307)
at org.apache.hadoop.mapred.Child.main(Child.java:170)
Hadoop流的使用方法
hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar -input /data/train/transformData/* -output /user/teamXXX/output/test -mapper "MapTest.py" -reducer "ReduceTest.py" -file MapTest.py -file ReduceTest.py
遇到这个问题原文指出了三种解决方案
1.在-mapper和-reducer 后跟的文件名加上双引号
2.确保你的map和reduce文件有执行权限:chmod a+x MapTest.py
3.打开map和reduce文件 在他们的头部加上"#!/usr/bin/env python"(我的问题应该是这个) 如果是ruby就把python改成ruby 以此类推