我已经挣扎了两个小时了!
我在python中创建了一个mapper脚本,该脚本正在其他python脚本中导入我的一个自定义函数。
# !/usr/bin/env python
import sys
import testImport
for line in sys.stdin:
if line and line!='':
words = line.strip().lower().split('\t')
print '%s\t%s' % (words[0].strip(),testImport.age_classify(int(words[1])))
这段代码在我的终端上运行得很好…问题是当我将这个Map器函数上传到aws elastic mapreduce时。我的作业失败,错误为“未能导入模块testimport”。
testimport是一个文件'testimport.py',其中包含我的一些助手函数(如age\u classify函数),我需要对标准输入的每一行进行操作。
我将脚本上传到与mapper脚本(给定脚本)相同的bucket中。
当我添加“流程序”步骤时,我试图在参数部分传递它。即使看到所有相关的问题,我也不知道该怎么办。
我要怎么做???
任何帮助都太好了!
谢谢您!
1条答案
按热度按时间crcmnpdw1#
正如您所说,我已经将testimport.py上传到map/reduce脚本的同一个bucket中。除非您指定,否则emr无法从该存储桶中读取。
对于java,我们在fatjar上为所有相关类创建了一个jar文件并执行它。对于python脚本,尝试创建单个map脚本和reducer脚本并运行它。