0

我正在运行一个 Hadoop 程序,并将以下内容作为我的输入文件input.txt

1
2

映射器.py

import sys
for line in sys.stdin:
    print line,
print "Test"

减速器.py

import sys
for line in sys.stdin:
    print line,

当我在没有 Hadoop 的情况下运行它时: $ cat ./input.txt | ./mapper.py | ./reducer.py,输出如预期:

1
2
Test

但是,通过流 API(如此处所述)通过 Hadoop 运行它,输出的后半部分似乎有点“加倍”:

1
2
Test    
Test

此外,当我通过 Hadoop 运行程序时,由于以下原因,它似乎有 1/4 的机会失败:

错误:失败的地图任务数超出了允许的限制。失败次数:1。

我已经看了一段时间了,无法弄清楚我没有得到什么。如果有人可以帮助解决这些问题,我将不胜感激!谢谢。

编辑:当input.txt是:

1
2
3
4
5
6
7
8
9
10

输出是:

1   
10  
2   
3   
4   
5   
6   
7   
8   
9   
Test    
Test
4

1 回答 1

0

它提供相同的输出。我猜你只是在 mapper.py 中指定 reducer 的位置。确保您提供了 reducer.py 的正确路径

于 2013-09-27T20:43:27.283 回答