控え

ここ (Hadoopで動くPythonのMapReduceプログラムを書く)とかを眺めててなんとなく分かったような気になっているなど。

mapper

基本的に -input なソレを並列で mapper なプログラムの標準入力になるはず。サンプルの mapper はスペース区切りをタブ区切りにして標準出力に吐き出しているのみ。
どっちかというと格好良いのは reducer です。

reducer

入力は mapper の出力または reducer の出力になります。チャネルは標準入力。mapper の出力かもしれないし reducer の出力かもしれん、というあたりがナニ。
reducer.py を再掲。

#!/usr/bin/env python
##reducer.py

__author__ = 'Nurul Ferdous <nurul@ferdo.us>'
__version__ = '0.2.20'

from operator import itemgetter
import sys

agregatedmarks = {}

for line in sys.stdin:
    name, marks = line.rstrip().split('\t')
    try:
        if agregatedmarks.get(name):
            agregatedmarks.get(name).append(marks)
        else:
            agregatedmarks[name] = [marks]
    except ValueError:
        pass

sortedmarksheet = sorted(agregatedmarks.items(), key=itemgetter(0))
for name, marks in sortedmarksheet:
    print '%s\t%s'% (name, marks)

ケツにあるソートは人間サマのためな模様。

早く

クラスタなナニが使えるようにならないかなぁ。