Привет, я начинаю изучать модель программирования Map Reduce.Я пытаюсь понять фрагмент кода ниже.
Каждая строка в формате CSV, и поэтому необходимо разделить каждое поле строки.Обратите внимание, что поле [2] представляет отправленное твиттер-сообщение.
class Practice(MRJob):
def mapper(self, _, line):
try:
fields = line.split(';')
if len(fields) == 4 :
bin = 5*math.floor(int(len(fields[2]))/5) #<--I am confused about this line
yield (bin, 1)
except:
pass
#do nothing
def reducer(self, bin, counts):
yield (bin, sum(counts))
Я запутался по поводу строки, отмеченной выше.
Насколько я понимаю, len (поле) вычислит длину твиттер-сообщения, преобразует его в целое число, а затем преобразует в тип integer и затем делит его на 5. Я исследовал, что математикаФункция метода .floor () возвращает наибольшее целое число, меньшее или равное данному числу.Насколько я понимаю, 5 * отменяет 5, так что на самом деле жирная строка кода
Однако я изо всех сил пытаюсь увидеть более широкую картину того, чего пытается добиться код Map Reduce.? 1. Считает ли количество твитов, кратное 5?