Я занимаюсь написанием простого кода MapReduce на Python, используя методы mapper, combiner и reducer.Входные данные - это кортеж (StudentID, оценка), а выходные данные задания MapReduce должны соответствовать средней оценке учащихся.
Мне было интересно, правильно ли я использую метод объединения и редуктора.Есть ли очевидные ошибки?
Любая обратная связь очень ценится.
#MapReduce Code that computes average
#input: (studentID, grade)
#Output: compute module average
#Emit key,value pairs
def mapper(self, _, tuple):
elements = tuple.split("")
studentGrade = elements[1]
yield(studentGrade,1)
#Combiner should do some aggregate computation
#Say key is 100, and values = 1,1,1,1
def combiner(self,grade,values):
count=0
sum=0
for i in values:
count = count + i
sum = sum + grade
#At the end of the for loop sum=400 and count=4
yield(sum,count)
#Combine aggregate and compute average
def reducer(self,grade,value):
count=0
sum=0
for i in value:
count=count+i
sum=sum+grade
average = sum/count
yield("average",average)