使用Hadoop流进行MapReduce时出现subprocess failed with code 2 No such file or dictionary时的解决方式

参加大数据竞赛时使用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 以此类推

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值