我想在mapper的map()调用中做一些繁重的处理。 我正在浏览源文件MapReduceServlet.java:
// Amount of time to spend on actual map() calls per task execution.
public static final int PROCESSING_TIME_PER_TASK_MS = 10000;
这是否意味着,地图调用只能持续10秒。 10秒后会发生什么? 我可以将它增加到大数,如1分钟或10分钟。
-Aswath
答案 0 :(得分:0)
使用Push Queues在任务中执行MapReduce操作,并且如documentation中所述,任务截止时间目前为10分钟(之后您将获得DeadlineExceededException
)。
如果任务未能执行,默认情况下App Engine会重试该任务,直到成功为止。如果您需要更长的10分钟截止日期,则可以使用Backend来执行任务。
查看Worker.java中PROCESSING_TIME_PER_TASK_MS的实际用法,此值用于限制单个任务中完成的地图调用次数。
如果执行了每个map
调用,如果从任务开始以来已超过10秒,它将生成一个新任务来处理其余的地图调用。
Worker.scheduleWorker
为每个给定的碎片生成一个新任务Worker.processMapper
processMapper
执行1 map
来电在最糟糕的情况下,默认任务请求截止日期(10分钟)应适用于您的每个地图呼叫。