每当我尝试在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] )
2条答案
按热度按时间vfh0ocws1#
我不能详细回答。
然而,我解决了同样的问题,当我删除一些额外的
print
我已经在mapper
. 可能是因为print
为…工作sys.stdin
.我知道也许你现在已经解决了这个问题
qc6wkl3g2#
错误
ValueError: need more than 1 value to unpack
在执行多重赋值时,如果右侧的值太少,则引发。所以看起来line
没有\t
在里面,所以line.split('\t',1)
结果是一个值,导致word, count = ("foo",)
.