1

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 プログラムが失敗する理由についてはまったく困惑しています。

どんな助けでも大歓迎です!ありがとうございました

4

2 に答える 2