hadoop streaming:在EMR上导入模块

时间:2011-11-14 23:12:28

标签: python hadoop 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脚本中使用: import zipimport

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

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

1 个答案:

答案 0 :(得分:2)

您有以下选项:

  1. 创建引导操作脚本并将其放在S3上。此脚本将以您喜欢的任何格式下载模块,并将其放置在mapper / reducer可访问的位置。要找出确切放置文件的位置,请以完成后不会关闭的方式启动集群,在那里ssh并检查目录结构。

  2. 使用mrjob启动您的作业流程。使用mrjob开始工作时,可以指定 bootstrap_python_packages ,mrjob将通过解压缩.tar.gz并运行 setup.py install 自动安装。

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

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