2017-12-03 6 views
0

Apache Hadoopで、与えられた入力ファイルの素数の平均合計を数えるmapreduceプログラムを実行しようとしています。 これは私のマッパーHadoop StreamingでPython mapreduceを実行するには

import sys 
for word in sys.stdin: 
    print(word) 

であると私は、次のコマンドでそれを実行すると、これは、今リデューサー

import sys 
primes = [] 
for word in sys.stdin: 
    if(int(word) >= 2): 
     isPrime = True 
     for a in range(2,int(word)): 
      if(int(word) % a == 0): 
       isPrime=False 
     if isPrime: 
      primes.append(int(word)) 
print(sum(primes)/float(len(primes))) 

です:私はエラーを取得していない

python primesMapper.py primesReducer.py -r hadoop --hadoop-streaming-jar /opt/cloudera/parcels/CDH-5.10.0-1.cdh5.10.0.p0.41/lib/hadoop-mapreduce/hadoop-streaming-2.6.0-cdh5.10.0.jar hdfs://bigdata1.sis.uta.fi:/user/students/input/primes1.txt --output-dir group25/primes.txt 

、何も実際に起こるそれはちょうどコマンドに固執する。私はそれを手動で終了すると、Mapperファイルにスタックされていることがわかります。

File "primesMapper.py", line 8, in <module> 
    for line in sys.stdin: 

助けが必要ですか?

+0

を使用して、それを実行しようとすることができます。 '-r hadoop --hadoop-streaming-jar' –

+0

http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/ –

答えて

0

あなたは、私が前にこの構文を見たことがない

hadoop jar *jar_path* -file *mapper_path* -mapper "python primesMapper.py" -file *reducer_path* -reducer "python primesReducer.py" -input *input_path* -output *output_path* 
関連する問題