wordcount:reducer python程序抛出valueerror

ux6nzvsh  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(337)

每当我尝试在hadoop系统中运行reducer-python程序时,就会出现这个错误。不过,mapper程序运行得非常好。已授予与我的Map程序相同的权限。有语法错误吗?
回溯(最近一次调用last):文件“reducer.py”,第13行,在word中,count=line.split('\t',1)valueerror:需要多于1个值才能解包


# !/usr/bin/env python

            import sys

            # maps words to their counts
            word2count = {}

            # input comes from STDIN
            for line in sys.stdin:
                # remove leading and trailing whitespace
                line = line.strip()

                # parse the input we got from mapper.py
                word, count = line.split('\t', 1)
                # convert count (currently a string) to int
                try:
                    count = int(count)
                except ValueError:
                    continue

                try:
                    word2count[word] = word2count[word]+count
                except:
                    word2count[word] = count

            # write the tuples to stdout
            # Note: they are unsorted
            for word in word2count.keys():
                print '%s\t%s'% ( word, word2count[word] )
vfh0ocws

vfh0ocws1#

我不能详细回答。
然而,我解决了同样的问题,当我删除一些额外的 print 我已经在 mapper . 可能是因为 print 为…工作 sys.stdin .
我知道也许你现在已经解决了这个问题

qc6wkl3g

qc6wkl3g2#

错误 ValueError: need more than 1 value to unpack 在执行多重赋值时,如果右侧的值太少,则引发。所以看起来 line 没有 \t 在里面,所以 line.split('\t',1) 结果是一个值,导致 word, count = ("foo",) .

相关问题