MrJob多步作业执行时间

时间:2017-02-28 18:59:47

标签: python hadoop mrjob

显示多步骤地图减少作业的执行时间的最佳方法是什么?

我尝试在作业的 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运行时也能得到正确的结果。

1 个答案:

答案 0 :(得分:1)

最简单的方法是在调用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)