MrJob 多步作业执行时间

MrJob multi step job execution time

显示多步 map reduce 作业执行时间的最佳方式是什么?

我试图在工作的 step1 的 mapper init 中设置一个自变量

    def mapper_init_timer(self):
      self.start= time.process_time()

但是当我尝试在 Step2 的 reducer_final 中阅读此内容时

def reducer_final_timmer(self):
    #self.start is None here
    MRJob.set_status(self,"total time")

我不明白为什么在步骤之间丢失了自验证。 如果这是设计使然,那么我们如何计算 MrJob 脚本的执行时间,该脚本在 运行 和 -r hadoop 时也给出正确的结果。

最简单的方法是获取调用 run() 之前和之后的时间并找出它们的差异,

from datetime import datetime
import sys

if __name__ == '__main__':
    start_time = datetime.now()
    MRJobClass.run()
    end_time = datetime.now()
    elapsed_time = end_time - start_time
    sys.stderr.write(elapsed_time)