当前位置:  开发笔记 > 编程语言 > 正文

如何在Hadoop流媒体作业中包含python包?

如何解决《如何在Hadoop流媒体作业中包含python包?》经验,为你挑选了3个好方法。

我正在尝试包含一个带有Hadoop流式传输作业的python包(NLTK),但我不知道如何在不通过CLI参数"-file"手动包含每个文件的情况下执行此操作.

编辑:一种解决方案是在所有从站上安装此程序包,但我目前没有该选项.



1> Dolan Antenu..:

刚刚遇到了这个解决方案的宝石:http://blog.cloudera.com/blog/2008/11/sending-files-to-remote-task-nodes-with-hadoop-mapreduce/

首先使用所需的库创建zip

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

接下来,通过Hadoop流包含"-file"参数:

hadoop -file nltkandyaml.zip

最后,通过python加载libaries:

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

此外,本页概述了如何包含语料库:http://www.xcombinator.com/2009/11/18/how-to-use-cascading-with-hadoop-streaming/

下载并解压缩wordnet语料库

cd wordnet
zip -r ../wordnet-flat.zip *

在python中:

wn = WordNetCorpusReader(nltk.data.find('lib/wordnet-flat.zip'))



2> Ray Toal..:

我会将软件包压缩成a .tar.gz或a .zip并将整个tarball或存档传递-file给hadoop命令的选项.我过去用Perl而不是Python做过这个.

也就是说,如果您zipimport在http://docs.python.org/library/zipimport.html上使用Python,我认为这仍然适用于您,它允许您直接从zip导入模块.



3> Jimmy Zhang..:

您可以像这样使用zip lib:

import sys
sys.path.insert(0, 'nltkandyaml.mod')
import ntlk
import yaml

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有