首页 > 解决方案 > Spark 作业状态记录

问题描述

我们有一个用 Scala 编写的 Spark 代码,其中唯一的操作是将数据保存回 Cassandra。我们还想在另一个表中记录动作开始时间、结束时间和状态来跟踪它。为此需要错误处理。执行操作时,我们如何在另一个表中记录错误消息?例如,运行成功,则状态为成功,如果失败,则状态为失败,并在另一列中显示错误消息。

寻求帮助。

标签: scalaapache-spark

解决方案


Oozie 用于工作失败/成功的最终状态

您可以使用 Oozie 来安排此 Spark 作业。它将使用作业状态成功或失败并将其作为参数传递到工作流的下一步。Oozie 工作流程的第二步可能是更新数据库的最终状态。

捕获异常的其他方法

在处理操作中捕获任何/第一个异常 - 在驱动程序上使用 try-catch - 将保存操作放在 try-catch 块中。

此处描述了这种方法, 特别是“异步执行和异常处理”部分涵盖了这一点。

如果要捕获数据帧中每一行发生的所有异常,则需要使用累加器或 Scala之类的东西尝试收集所有异常并稍后聚合它们。更多细节在这里

任务/阶段/作业进度使用 SparkListeners

进度可以从这项工作中更新,没有问题的代码,所以不能准确地建议把它放在哪里。

检查Spark 侦听器以获取作业执行各个部分的开始和停止时间,并使用它来更新数据库中的进度。

问候,卢卡斯


推荐阅读