首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用hadoop streaming时如何在HDFS中导入nltk语料库

使用hadoop streaming时如何在HDFS中导入nltk语料库
EN

Stack Overflow用户
提问于 2012-05-23 16:35:07
回答 2查看 1.3K关注 0票数 1
代码语言:javascript
复制
 I got a little problem I want to use nltk corpus in hdfs,But failed.For example I want to load nltk.stopwords in my python code.
 I use this http://eigenjoy.com/2009/11/18/how-to-use-cascading-with-hadoop-streaming/

我说了这么多,但我不知道如何在我的工作中改变它。我的nltk文件名是nltk-2.0.1.rc1,我的pyam文件名是PyYAML.3.0.1,所以我的commad是:

代码语言:javascript
复制
zip -r nltkandyaml.zip nltk-2.0.1.rc1 PyYAML.3.0.1

然后显示"mv ntlkandyaml.zip /path/to/where/your/mapper/will/be/nltkandyaml.mod“”

我的主目录保存在/ mapper.py /mapreduce/mapper.py中,所以我的命令是:

代码语言:javascript
复制
mv ntlkandyaml.zip /home/mapreduce/nltkandyaml.mod

是那么回事吗?

然后我压缩我的语料库停用词:

代码语言:javascript
复制
zip -r /nltk_data/corpora/stopwords-flat.zip *

在我的代码中,我使用了:

代码语言:javascript
复制
importer = zipimport.zipimporter('nltkandyaml.mod')
yaml = importer.load_module('PyYAML-3.09')
nltk = importer.load_module('nltk-2.1.0.1rc1')
from nltk.corpus.reader import stopwords
from nltk.corpus.reader import StopWordsCorpusReader
nltk.data.path+=["."]
stopwords = StopWordsCorpusReader(nltk.data.find('lib/stopwords-flat.zip'))

最后,我使用命令:

代码语言:javascript
复制
bin/hadoop jar /home/../streaming/hadoop-0.21.0-streaming.jar -input  
/user/root/input/voa.txt -output /user/root/output -mapper /home/../mapper.py -reducer  
/home/../reducer.py -file /home/../nltkandyaml.mod -file /home/../stopwords-flat.zip

请告诉我我哪里错了

谢谢大家

EN

回答 2

Stack Overflow用户

发布于 2012-05-23 18:45:03

我不完全清楚您的问题/错误是什么,但是如果您希望在运行时可以在当前工作目录中使用stopwords flat.zip的内容,请使用-archives标志而不是-files (这可能是您使用-file时的问题所在)。

Hadoop将解压指定的归档文件(zip),其内容将可用,就像它们位于正在运行的映射器的本地目录中一样:

代码语言:javascript
复制
bin/hadoop jar /home/../streaming/hadoop-0.21.0-streaming.jar \
  -input  /user/root/input/voa.txt 
  -output /user/root/output \
  -mapper /home/../mapper.py \
  -reducer /home/../reducer.py \
  -files /home/../nltkandyaml.mod \
  -archives /home/../stopwords-flat.zip
票数 0
EN

Stack Overflow用户

发布于 2013-07-16 02:27:18

代码语言:javascript
复制
    zip -r [your-nltk-package-name/nltk] nltk.zip

    zip -r [your-yaml-package-name/lib/yaml] yaml.zip

然后在脚本中添加:

代码语言:javascript
复制
    importer = zipimport.zipimporter('nltk.zip')
    importer2=zipimport.zipimporter('yaml.zip')
    yaml = importer2.load_module('yaml')
    nltk = importer.load_module('nltk')

在您的命令中,添加:

代码语言:javascript
复制
    -file [path-to-your-zip-file]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10716302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档