显示多步骤地图减少作业的执行时间的最佳方法是什么?
我尝试在作业的 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运行时也能得到正确的结果。
答案 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)