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/

私はそう言うことはすべてしますが、私の仕事でそれを変換する方法がわかりません。私のnltkファイル名はnltk-2.0.1.rc1です。私のpyamファイル名はPyYAML.3.0.1なので、コンマは次のようになります。

zip -r nltkandyaml.zip nltk-2.0.1.rc1 PyYAML.3.0.1

次に、「mvntlkandyaml.zip/path/to/where/your/mapper/will/be/nltkandyaml.mod」と表示されます。

私のmapper.pyは/home/mapreduce/mapper.pyに保存されるので、私のコマンドは次のとおりです。

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'))

最後に私はコマンドを使用します:

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

どこが間違っているのか教えてください

皆さん、ありがとうございました

4

2 に答える 2

0

あなたの問題/エラーが何であるかは完全にはわかりませんが、実行時に現在の作業ディレクトリで 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 \
  -files /home/../nltkandyaml.mod \
  -archives /home/../stopwords-flat.zip
于 2012-05-23T10:45:02.923 に答える