Spark 有没有办法捕获执行器终止异常?

2024-05-15

在执行我的 Spark 程序期间,有时(其原因对我来说仍然是个谜)yarn 会杀死容器(执行器),并给出超出内存限制的消息。我的程序确实恢复了,但 Spark 通过生成一个新容器重新执行任务。但是,在我的程序中,任务还会在磁盘上创建一些中间文件。当容器被杀死时,这些文件会被留下。有没有办法可以捕获执行程序被杀死的异常,以便我可以删除留下的中间文件。显然,异常处理代码也需要在执行程序运行的同一节点上运行,以便我可以从那里删除文件。


作为一个选项,您可以尝试使用SparkListener功能。 所以你可以创建自己的类并实现SparkListener用于挂钩可用事件的接口,这些事件是不言自明的。 然后您需要将该自定义侦听器添加到SparkContext.

有 2 个选项可用:

  • SparkContext.addSparkListener(<your custom listener>)
  • Via spark.extraListeners属性,更多信息在这里http://spark.apache.org/docs/latest/configuration.html#available-properties http://spark.apache.org/docs/latest/configuration.html#available-properties
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 有没有办法捕获执行器终止异常? 的相关文章

随机推荐