python – hadoop streaming:在EMR上导入模块

This previous question addressed如何为hadoop流导入nltk等模块.

概述的步骤是:

zip -r nltkandyaml.zip nltk yaml
mv ntlkandyaml.zip /path/to/where/your/mapper/will/be/nltkandyaml.mod

您现在可以导入nltk模块以在Python脚本中使用:
进口zipimport

importer = zipimport.zipimporter('nltkandyaml.mod')
yaml = importer.load_module('yaml')
nltk = importer.load_module('nltk')

我有一份工作,我想在Amazon’s EMR运行,我不知道在哪里放置压缩文件.我是否需要在boostrapping选项下创建引导脚本,还是应该将tar.gz放在S3中,然后放在额外的args中?我对这一切都很陌生,并希望能够引导我完成整个过程的答案将非常感激.

最佳答案 您有以下选择:

>创建引导操作脚本并将其放在S3上.此脚本将以您喜欢的任何格式下载模块,并将其放置在mapper / reducer可访问的位置.要找出确切放置文件的位置,请以完成后不会关闭的方式启动集群,在那里ssh并检查目录结构.
>使用mrjob启动您的作业流程.使用mrjob启动作业时,可以指定bootstrap_python_packages,mrjob将通过解压缩.tar.gz并运行setup.py install来自动安装.

http://packages.python.org/mrjob/configs-runners.html

我更喜欢选项2,因为mrjob在Python中开发MapReduce作业也有很大帮助.特别是它允许在本地运行作业(有或没有Hadoop)以及EMR,这简化了调试.

点赞