如何在MRJob中的行之间进行迭代

时间:2018-10-16 17:09:04

标签: python mapreduce mrjob

我有一个文本文档,上面满是运行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 :(得分:0)

不熟悉此库,但我认为您正在寻找的模式是这样:

实例化班级

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

text_blob也是您链接的文本块。然后,您可以使用例如for循环遍历key_generator对象