Python hadoop流媒体:在EMR上导入模块

Python hadoop流媒体:在EMR上导入模块,python,hadoop,emr,Python,Hadoop,Emr,如何导入模块,如用于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

如何导入模块,如用于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')

我有一个工作,我想运行,我不知道在哪里把压缩文件。我是否需要在boostrapping选项下创建一个引导脚本,还是应该将tar.gz放在S3中,然后放在额外的参数中?我对这一切都很陌生,如果能给我一个能引导我完成整个过程的答案,我将不胜感激。

您有以下选择:

  • 创建引导操作脚本并将其放在S3上。此脚本将以您喜欢的任何格式下载模块,并将其放置在映射器/还原器可以访问的位置。要找到文件的确切存放位置,启动集群时要确保集群在完成后不会关闭,在那里使用ssh并检查目录结构

  • 使用mrjob启动作业流。使用mrjob启动作业时,可以通过解压缩.tar.gz并运行setup.py install来指定要自动安装的mrjob

  • 我更喜欢选项2,因为mrjob在用Python开发MapReduce作业方面也有很大帮助。特别是,它允许本地运行作业(使用或不使用Hadoop)以及在简化调试的EMR上运行作业