Hadoop错误“错误:java.lang.RuntimeException:PipeMapRed.waitOutputThreads():子进程失败,代码为1”

时间:2017-02-23 05:38:41

标签: python hadoop mrjob bigdata

mapper.py工作正常。我在群集上运行mapper.py并将其输出存储在part-0.txt

像字数统计工作一样,我试图计算存储在part-0.txt文件中的每个不同密钥的出现次数。

我尝试从这个链接复制粘贴代码: http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/

虽然有效但我无法理解它的减速机代码,所以我写了自己的减速机。

以下是reducer 代码

#!/usr/bin/env python
from numpy import *
import sys

arr = []
previous_printed_word = ''
#f=open('/home/nalin/Downloads/part-0.txt','r')

for line in sys.stdin:
    line = line.strip()
    current_word, current_count = line.split('\t',1)
    current_count = 0

    if(previous_printed_word != current_word):
        #f2 = open('/home/nalin/Downloads/part-0.txt', 'r')
        for line2 in sys.stdin:
            line2 = line2.strip()
            word, count2 = line2.split('\t', 1)
            count2 = int(count2)
            if current_word == word:
                current_count = current_count + count2
            else:
                continue
        print '%s\t\t\t%d' % (current_word, current_count-1)
        arr.append ( [current_word, current_count-1] )
        previous_printed_word = current_word

arr = sorted(arr, key=lambda row: row[1])
#print arr
length=len(arr)
print "LENGHT OF 2-D ARRAY IS = ",length
for i in range(1,11):
    print arr[length-i]

我一直收到错误

Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1

我尝试查找此错误的含义,并发现当代码出现问题时会出现此错误。

但如果我取消注释这两行:

f = open('/home/nalin/Downloads/part-0.txt', 'r')

f2 = open('/home/nalin/Downloads/part-0.txt', 'r')

f& f2代替sys.stdin(在两次出现的sys.stdin中),它就像魅力一样。

当我在mappers输出文件上运行它时它正在工作。 当我在我的集​​群上运行它时,它无法正常工作。

帮我弄清楚代码中出了什么问题。

0 个答案:

没有答案