MapReduce, настройка метода Mapper - PullRequest
0 голосов
/ 25 октября 2018

Я пишу простую программу Map Reduce, которая подсчитывает количество твитов, отправленных в день во время спортивного события.

def mapper(self,_,line):
    #Extracting the fields of csv line
    fields = line.split(";")
    #To choose the actual tweet we extract field[4]
    for field[4] in fields:
        time_epoch = int(fields[0])/1000
        #Extract date tweet was sent
        day = time.strftime("%d",time.gmtime(time_epoch))
        #For each date, count num of tweets sent
        #Since calculating the number of tweets sent each day
        #Shouldn't day be the key, and intermediate value be 1
        yield(day, 1)

И теперь код редуктора принимает промежуточный ключ, значения и агрегирует:

def reducer(self, day, counts):
    #For each day during the sporting event, calculate the total tweets sent
    yield(day, sum(counts))

Я пытался решить, должен ли ключ для редуктора быть реальным твитом или днем, когда твит был отправлен.Тем не менее, я пришел к выводу, что, поскольку я хочу вычислить итоговую сумму за каждый день, конкретный день должен быть ключевым.

Однако, я получаю сообщение об ошибке, мне было интересно, есть личто-то очевидно, что я скучаю?Большое спасибо!

1 Ответ

0 голосов
/ 26 октября 2018

Вы не упомянули свою ошибку, но for field[4] in fields: не является синтаксически правильным.

Возможно, вы имели в виду if len(fields) >= 4:

Тем не менее, я пришел к выводу, что, поскольку я хочу вычислять итоговую сумму за каждый день, конкретный день должен быть ключевым

Это звучит правильно для меня

...