我试图在aws弹性mapreduce作业中使用pythonMap器脚本中的外部库。
但是,我的脚本似乎无法在缓存中找到模块。我把文件归档到一个叫 helper_classes.tar
把tarball上传到amazons3的一个桶里。在控制台上创建mapreduce作业时,我将参数指定为:
cacheArchive s3://folder1/folder2/helper_classes.tar#helper_classes
在pythonMap器脚本的开头,我包含了以下代码来导入库:
import sys
sys.path.append('./helper_classes')
import geoip.database
当我运行mapreduce作业时,它失败了 ImportError: No module named geoip.database.
( geoip
是文件夹的顶层 helper_classes.tar
数据库是我试图导入的模块。)
你知道我做错了什么吗?
1条答案
按热度按时间a0zr77ik1#
这个主题可能要迟到了。
原因是没有在所有hadoop节点上安装geoip.database模块。您可以尝试在map/reduce代码中不使用不常见的导入,或者尝试在所有hadoop节点上安装所需的模块。