[英]How to run Python mapreduce in Hadoop Streaming
我试图在Apache Hadoop中运行一个mapreduce程序,该程序计算给定输入文件中素数的平均和。 这是我的Mapper
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:
有什么帮助吗?
您可以尝试使用运行它
hadoop jar <streaming jar_path> -file *mapper_path* -mapper "python primes_mapper.py" -file *reducer_path* -reducer "python primes_reducer.py" -input *input_path* -output *output_path*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.