Как перебирать строки в MRJob - PullRequest
0 голосов
/ 16 октября 2018

У меня есть текстовый документ, полный строк твитов, для которых мне нужно запустить задание MapReduce.Я использую Python и MRJob для этого со следующим кодом:

from mrjob.job import MRJob
import re
import datetime

class exerciseOne(MRJob):

    def mapper(self, _, line):
        fields = line.split(";")
        epochtemp = int(fields[0])
        difference = epochtemp/1000.0
        key = datetime.datetime.fromtimestamp(difference).strftime('%Y-%m-%d')
        yield(key, 1)

if __name__ == '__main__':
    exerciseOne.run()

Небольшой образец текста, который необходимо проанализировать, содержится здесь: https://textuploader.com/dnx59, если кому-то это интересно.

Проблема, с которой я столкнулся, заключается в том, что я не знаю, как перебирать строки в методе mapper для генерации всех пар ключ-значение.Я пробовал следующее:

for line in lines

и

while(line)

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

1 Ответ

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

Не знаком с этой библиотекой, но я думаю, что шаблон, который вы ищете, это:

Класс экземпляра:

line_mapper = exerciseOne()
key_generator = line_mapper.mapper(None, text_blob)

Где text_blob - блок текста, который вы ищетесвязаны тоже.После этого вы сможете перебирать объект key_generator, используя цикл for, например

...