如何解决错误:java.lang.RuntimeException:PipeMapRed.waitOutputThreads:子进程在AWS-EMR上失败,代码为1,但在本地计算机上工作
我正在尝试运行一个简单的mapreduce代码,以使用mapper.py进行读取,获取mapper.py的输出,并通过reducer.py进行读取。此代码在本地计算机上有效,但是当我在aws-emr上尝试时,出现以下错误-
Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
这是input.txt,mapper.py和reducer.py
input.txt
scott,haris
jenifer,smith
ted,brandy
amanda,woods
bob,wilton
damn,halloween
mapper.py
#!/usr/bin/env python
import sys
for line in sys.stdin:
x = line.strip()
first,last = x.split(",")
print '%s\t%s' % (first,last)
reducer.py
#!/usr/bin/env python
import sys
for line in sys.stdin:
x = line.strip()
key,value = x.split('\t')
print '%s\t%s' % (key,value)
我正在使用以下命令:
hadoop jar /usr/lib/hadoop/hadoop-streaming.jar -files s3://test/mapper.py,s3://test/reducer.py -mapper "python mapper.py" -reducer "python reducer.py" -input s3://test/input.txt -output s3://test/output
解决方法
您似乎在使用python reducer
/ mapper
脚本时遇到问题,能否检查以下两件事
1。您的Mapper
和Reducer
脚本是否可执行(确保您使用指向正确的env,例如尝试#!/usr/bin/python
)并具有正确的权限?
2。您的Python程序是正确的,例如,如果服务器运行的是python3,则需要在print()
或脚本的其他任何问题中使用方括号。
尝试使用bash在emr中正常执行python,并查看其是否有效
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。