工作失败后累积器(长期)丢失

时间:2017-01-31 15:03:02

标签: apache-spark

我创建了一个执行多个操作的spark作业,同时使用长累加器收集每个操作的记录数。我已经实现了Spark监听器来获取与任务,阶段和作业相关的信息。 侦听器中的onTaskEnd方法可以访问每个任务详细信息,例如id,status,accumulators。

例如:

覆盖def onTaskEnd(taskEnd:SparkListenerTaskEnd){

taskEnd.taskInfo.accumulables.foreach(f => {         println(“任务结束状态:”+ taskEnd.taskInfo.status)         LOG.info(“Acc iD:”+ f.id +“Acc name:”+ f.name.get +“Acc value:”+ f.value.get +“Acc update:”           + f           .update)     }) }

上面的代码迭代任务中存在的所有可用累加器,并打印任务状态 例如RUNNING,SUCCESS,FAILED。

在我的应用程序中,为每个处理单元创建一个长累加器。我的目标是确定失败的处理单元。

当作业失败时,失败任务显示失败状态但不显示长累加器,而内部累加器(如internal.metrics.executorRunTimeaccumulator,internal.metrics.peakExecutionMemoryaccumulator等)可访问。 我尝试在侦听器的onTaskStart / onTaskEnd方法中访问长累加器,但它们不存在于累加器中。

因此,我无法确定失败的处理单元。

有人可以告诉我工作失败后积累物中没有长累加器的原因。

谢谢,

0 个答案:

没有答案