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

使用hadoop流时如何在HDFS中导入nltk语料库,hadoop,streaming,nltk,corpus,Hadoop,Streaming,Nltk,Corpus,我是这么说的,但我不知道如何在工作中改变它。我的nltk文件名是nltk-2.0.1.rc1我的pyam文件名是PyYAML.3.0.1,因此我的命令是: 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

我是这么说的,但我不知道如何在工作中改变它。我的nltk文件名是nltk-2.0.1.rc1我的pyam文件名是PyYAML.3.0.1,因此我的命令是:

 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/
然后它说mv ntlkandyaml.zip/path/to/where/your/mapper/will/be/nltkandyaml.mod

My mapper.py保存在/home/mapreduce/mapper.py中,因此我的命令是:

zip -r nltkandyaml.zip nltk-2.0.1.rc1 PyYAML.3.0.1
是这样吗

然后我拉上我的拉链,说:

mv ntlkandyaml.zip /home/mapreduce/nltkandyaml.mod
在我的代码中,我使用:

zip -r /nltk_data/corpora/stopwords-flat.zip *
最后我使用命令:

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'))
请告诉我哪里错了


谢谢大家

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

Hadoop将解压命名的存档文件zip,内容将可用,就好像它们位于正在运行的映射程序的本地目录中一样:

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
然后在脚本中添加:

    zip -r [your-nltk-package-name/nltk] nltk.zip

    zip -r [your-yaml-package-name/lib/yaml] yaml.zip
在命令中,添加:

    importer = zipimport.zipimporter('nltk.zip')
    importer2=zipimport.zipimporter('yaml.zip')
    yaml = importer2.load_module('yaml')
    nltk = importer.load_module('nltk')

感谢您的回答,我使用了您的答案,但仍然失败。直到无法工作,您才能粘贴运行hadoop流媒体作业时收到的错误消息。
    importer = zipimport.zipimporter('nltk.zip')
    importer2=zipimport.zipimporter('yaml.zip')
    yaml = importer2.load_module('yaml')
    nltk = importer.load_module('nltk')
    -file [path-to-your-zip-file]