在执行我的 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(使用前将#替换为@)