import自定义函数在aws-emr上的mapreduce代码中的实现

oprakyz7  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(305)

我已经挣扎了两个小时了!
我在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中。
当我添加“流程序”步骤时,我试图在参数部分传递它。即使看到所有相关的问题,我也不知道该怎么办。
我要怎么做???
任何帮助都太好了!
谢谢您!

crcmnpdw

crcmnpdw1#

正如您所说,我已经将testimport.py上传到map/reduce脚本的同一个bucket中。除非您指定,否则emr无法从该存储桶中读取。
对于java,我们在fatjar上为所有相关类创建了一个jar文件并执行它。对于python脚本,尝试创建单个map脚本和reducer脚本并运行它。

相关问题