scala - Spark 作业状态记录
问题描述
我们有一个用 Scala 编写的 Spark 代码,其中唯一的操作是将数据保存回 Cassandra。我们还想在另一个表中记录动作开始时间、结束时间和状态来跟踪它。为此需要错误处理。执行操作时,我们如何在另一个表中记录错误消息?例如,运行成功,则状态为成功,如果失败,则状态为失败,并在另一列中显示错误消息。
寻求帮助。
解决方案
Oozie 用于工作失败/成功的最终状态
您可以使用 Oozie 来安排此 Spark 作业。它将使用作业状态成功或失败并将其作为参数传递到工作流的下一步。Oozie 工作流程的第二步可能是更新数据库的最终状态。
捕获异常的其他方法
在处理操作中捕获任何/第一个异常 - 在驱动程序上使用 try-catch - 将保存操作放在 try-catch 块中。
此处描述了这种方法, 特别是“异步执行和异常处理”部分涵盖了这一点。
如果要捕获数据帧中每一行发生的所有异常,则需要使用累加器或 Scala之类的东西尝试收集所有异常并稍后聚合它们。更多细节在这里
任务/阶段/作业进度使用 SparkListeners
进度可以从这项工作中更新,没有问题的代码,所以不能准确地建议把它放在哪里。
检查Spark 侦听器以获取作业执行各个部分的开始和停止时间,并使用它来更新数据库中的进度。
问候,卢卡斯
推荐阅读
- python - 如何使用 Selenium 从先前插入的输入中提取文本?
- robotframework - 机器人框架-移动自动化测试用例
- r - 导入包变量定义
- git - 在 Git 中,如何在分支上进行新提交,其树等于另一个提交的树
- java - SharedPreference 与 EditText 字符串
- python - 如何知道哪些帧在顶部(又名 tkraise 之后)?
- swift - 按字符串化 JSON 数组属性中包含的值过滤层
- r - 从所有可能的变量组合生成虚拟变量
- mysql - 如何在每次 MySQL 初始化时运行 SQL 脚本?
- php - laravel 为什么会出现应用程序错误