2017-04-18 6 views
0

これは似たような質問です。私はいくつかの答えを行ってきたが、誰も働かなかった。だからここに私が引き起こしているのか分からないように私は、エラーをデバッグすることができません、私は私のMapReduceプログラムのマッパーと減速を事を書いていて、私はエラーを取得するには、私のレデューサークラスに2つ以上の値が必要です

Traceback (most recent call last): File "/usr/local/hadoop/./reducer.py", line 10, in desc, count = line.split('\t', 1) ValueError: need more than 1 value to unpack

以下、次のエラーを取得しています問題。以下のMapperとReducerクラスのコードを見つけてください。

マッパーコード:

#!/usr/bin/env python 
import sys 
for line in sys.stdin: 
    line = line.strip('') 
    bYear = line.split(',') 
    for birthYear in bYear: 
     print '%s\t%s' % (bYear[6],1) 

リデューサーコード:

#!/usr/bin/env python 
import sys 

current_desc = None 
current_count = 0 
desc = None 

for line in sys.stdin: 
    line = line.strip() 
    **desc, count = line.split('\t', 1)** . ---> This is where I'm getting an error. 
    try: 
     count = int(count) 
    except ValueError: 
     continue 

    if current_desc == desc: 
     current_count += count 
    else: 
     if current_desc: 
      # write result to STDOUT 
      print '%s\t%s' % (current_desc, current_count) 
     current_count = count 
     current_desc = desc 

if current_desc == desc: 
    print '%s\t%s' % (current_desc, current_count) 

助けてください。

答えて

0

したがってline.split('\t', 1)のみ1の要素を返して、その特定の行には「\ tの」文字が存在しないことと思われるとdesc, count

+0

おかげでたくさんに割り当てることはできません!私はちょうど私がCSVファイルを使用していて、それを\ t(タブ)で分割していることに気づいた。私がコンマに変更したとき、それはうまくいった! –

関連する問題