我们有一个用Scala编写的Spark代码,其中唯一的动作是将数据保存回Cassandra。另外,我们想在另一个表中记录操作的开始时间,结束时间和状态以进行跟踪。为此,需要进行错误处理。执行动作后,如何在另一个表中记录错误消息?例如,运行成功,则状态为成功,如果失败,则状态为失败,并在另一栏中显示错误消息。
寻求帮助。
答案 0 :(得分:0)
Oozie,了解工作失败/成功的最终状态
您可以使用Oozie安排此Spark作业。 它将使用作业状态成功或失败,并将其作为参数传递给工作流程的下一步。 Oozie工作流程的第二步可能是更新数据库的最终状态。
其他捕获异常的方法
在处理操作中捕获任何/第一个异常-在驱动程序上使用try-catch -将保存操作放入try-catch块中。
here中介绍了这种方法 特别是“异步执行和异常处理”部分对此进行了介绍。
如果您想捕获数据框中每一行发生的所有异常,则需要使用诸如累加器或Scala Try 之类的方法来收集所有异常例外,以后再汇总。 更多详细信息here
任务/阶段/作业进度使用SparkListeners
进度可以从此作业内部进行更新,没有相关代码,因此无法建议确切的放置位置。
选中Spark Listeners,以获取作业执行各个部分的开始和停止时间,并使用它们来更新数据库中的进度。
关于, 卢卡斯