我一直在努力奋斗2个小时!
我在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])))
此代码在我的终端上运行良好....问题是当我将此映射器函数上载到AWS Elastic MapReduce时。我的工作失败,错误说"无法导入模块testImport"。
testImport是一个文件' testImport.py'其中包含一些我的辅助函数(如age_classify函数),我需要在每行标准输入上操作。
我将脚本上传到与我的映射器脚本(给定脚本)相同的存储桶中。
当我添加' Streaming program'时,我试图在参数部分传递它。步。在看到所有相关问题之后,我不知道该怎么做。
我怎样才能完成这件事?
任何帮助都会非常棒!
谢谢!
答案 0 :(得分:0)
如前所述,我已将testImport.py上传到map / reduce脚本的同一个存储桶中。除非您指定,否则EMR无法从该存储桶读取。
对于java,我们在fatjar上为所有相关类创建并创建单个jar文件并执行它。对于你的python脚本,尝试创建单个map脚本和reducer脚本并运行它。