在弹性mapreduce的分布式缓存中使用文件的问题

y1aodyip  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(318)

我试图在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 数据库是我试图导入的模块。)
你知道我做错了什么吗?

a0zr77ik

a0zr77ik1#

这个主题可能要迟到了。
原因是没有在所有hadoop节点上安装geoip.database模块。您可以尝试在map/reduce代码中不使用不常见的导入,或者尝试在所有hadoop节点上安装所需的模块。

相关问题