pyspark作业超时

kcrjzv8t  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(458)

热释光;博士
有没有办法让Pypark作业超时?我希望在群集模式下运行的spark作业在运行时间超过预先指定的时间时自动终止。
较长版本:
文档中列出的神秘超时最多为120秒,只有一个是无限长的,但是只有当spark.dynamicallocation.enabled设置为true时才使用这个超时,但是默认情况下(我没有接触这个集群上的任何配置参数)它是false。
我想知道,因为我有一个代码,对于一个特定的病理输入将运行非常慢。对于预期的输入,作业将在一小时内终止。检测病理输入与尝试解决问题一样困难,因此我无法选择进行巧妙的预处理。代码的细节既无聊又无关紧要,所以我不想让你去读它们=)
我正在使用pyspark,所以我打算像这样装饰导致挂起的函数,但似乎这个解决方案在集群模式下不起作用。我通过bash脚本中的spark submit调用我的spark代码,但据我所知,bash在spark作业运行时“进入睡眠状态”,并且只有在spark作业终止时才能获得控制权,所以我不认为这是一个选项。
实际上,bash可能是一个解决方案,如果我做了一些聪明的事情,但我必须得到这样的工作的驱动程序id,现在我想“这是太多的想法和打字的东西这么简单的超时,应该内置。”

9rnv2umw

9rnv2umw1#

您可以设置一个经典的python警报。然后在处理函数中可以引发异常或使用 sys.exit() 函数来完成驱动程序代码。由于驱动器完成,Yarn杀死整个应用程序。
您可以在文档中找到示例用法:https://docs.python.org/3/library/signal.html#example

相关问题