【问题标题】:How to run Python mapreduce in Hadoop Streaming如何在 Hadoop Streaming 中运行 Python mapreduce
【发布时间】:2017-12-03 13:29:47
【问题描述】:

我正在尝试在 Apache Hadoop 中运行一个 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:

有什么帮助吗?

【问题讨论】:

标签: python hadoop mapreduce hadoop-streaming


【解决方案1】:

你可以尝试使用

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*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    相关资源
    最近更新 更多