Hadoop で Python プログラムを実行しようとしています。プログラムには NLTK ライブラリが含まれます。このプログラムは、こちらで説明されているように、Hadoop ストリーミング API も利用します。
マッパー.py:
#!/usr/bin/env python
import sys
import nltk
from nltk.corpus import stopwords
#print stopwords.words('english')
for line in sys.stdin:
print line,
レデューサー.py:
#!/usr/bin/env python
import sys
for line in sys.stdin:
print line,
コンソール コマンド:
bin/hadoop jar contrib/streaming/hadoop-streaming.jar \ -file /hadoop/mapper.py -mapper /hadoop/mapper.py -file /hadoop/reducer.py -reducer /hadoop/reducer.py -input /hadoop/input.txt -output /hadoop/output
これは完全に実行され、出力には入力ファイルの行が含まれているだけです。
ただし、この行 (mapper.py から):
#print stopwords.words('english')
がコメント解除されている場合、プログラムは失敗し、
ジョブが失敗しました。エラー: 失敗したマップ タスクの数が許可された制限を超えました。失敗数: 1。
私はチェックして、スタンドアロンのpythonプログラムで、
print stopwords.words('english')
完全に正常に動作するので、Hadoop プログラムが失敗する理由についてはまったく困惑しています。
どんな助けでも大歓迎です!ありがとうございました