如何使用不同参数运行多个mrjob任务

0 投票
1 回答
1027 浏览
提问于 2025-05-01 06:25

我有一个这样的工作:

from mrjob.job import MRJob
from mrjob.step import MRStep
import urllib
import re
import httpagentparser

UA_STRING = re.compile(MYSUPERCOMPLEXREGEX)

class MRReferralAnalysis(MRJob):

    def mapper(self, _, line):

        for group in UA_STRING.findall(line):

            ua = httpagentparser.simple_detect(group)
            yield (ua, 1)

    def reducer(self, itemOfInterest, counts):

        yield (sum(counts), itemOfInterest)

    def steps(self):
        return [
            MRStep( mapper=self.mapper,
                    reducer=self.reducer)
        ]

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

现在我想多次调用这个mrjob程序(大约二十次),每次使用不同的参数,这些参数是从另一个文件中获取的,并传递给我的MYSUPERCOMPLEXREGEX。请问用mrJob实现这个可能吗?我该如何安排这些任务?或者写一个包装程序来触发这些工作?

暂无标签

1 个回答

0

MRReferralAnalysis.run() 这个调用放在一个循环里,然后在循环之前立即读取你的配置。这样这个任务就会运行多次。

撰写回答