1

Python mrjob モジュールを介して Map Reduce ジョブで結合するインマッパーを使用しています。単一のペアを発行する mapper_final 関数を作成したため、リデューサーには単一のキーと値のペアのみが発行されると確信しています。

ただし、私のreduce関数は間違っています:

  def reducer(self, key, occurrences):
    '''
    Calculates the final value.
    '''
    yield 'Final Value: ', occurrences[0] / 2

エラーは読み取ります

File "calculateFinalValue.py", line 354, in reducer
    yield 'Final Value: ', occurrences[0] / 2
TypeError: 'generator' object has no attribute '__getitem__'

に索引付けできないのはなぜoccurrencesですか? そのリストには 1 つのペアしかないはずですよね?

4

1 に答える 1

3

occurrencesではなく、listですgenerator。が必要な場合はlist、ジェネレーターの結果をリストにまとめる必要があります。何かのようなもの:

list_occurrences = [ occ for occ in occurrences ]

また

list_occurrences = list(occurrences)

yield 'Final Value: ', list_occurrences[0] / 2

または、次のようにして出現回数の最初の値を取得できますoccurrences.next()

yield 'Final Value: ', occurrences.next() / 2
于 2012-09-23T21:02:41.690 に答える