mapper.py
#!/usr/bin/env python
import sys
def convert_line_to_iter(file_in):
for line in file_in:
yield line.strip().split(' ')
def emit_key_value():
for k, m, n, v in convert_line_to_iter(sys.stdin):
for i in range(5):
if k == 'a':
print '%s,%s %s,%s,%s' % (m,i,k,n,v)
else:
print '%s,%s %s,%s,%s' % (i,n,k,m,v)
emit_key_value()
reducer.py
#!/usr/bin/env python
import sys
from itertools import groupby
from operator import itemgetter
def convert_mapper_o_to_iter(file_in):
for line in file_in:
yield line.strip().split(' ')
def emit_final_key_value():
for key, el in groupby(convert_mapper_o_to_iter(sys.stdin), itemgetter(0)):
A = {}
B = {}
for item in list(el):
con = item[1].split(',')
if con[0] == 'a':
A[int(con[1])] = int(con[2])
else:
B[int(con[1])] = int(con[2])
ans = 0
for i in range(5):
if i in A and i in B:
ans += A[i]*B[i]
print key, ans
emit_final_key_value()