超时pyspark工作

时间:2016-10-24 21:10:10

标签: apache-spark pyspark

TL; DR

有没有办法超时pyspark工作?我希望在群集模式下运行的spark作业在运行时间超过预定时间时自动终止。

更长的版本:

the documentation中列出的神秘超时最多为120秒,除了无穷大,但只有在spark.dynamicAllocation.enabled设置为true时才会使用,但默认情况下(我没有触及任何配置)这个集群上的参数)是假的。

我想知道,因为我有一个代码,对于特定的病理输入将运行极慢。对于预期的输入,作业将在一小时内终止。检测病理输入与尝试解决问题一样困难,因此我没有选择进行聪明的预处理。代码的细节很无聊,无关紧要,所以我将不遗余力地阅读它们=)

我正在使用pyspark所以我打算装饰导致挂起的函数,如this,但似乎这个解决方案在集群模式下不起作用。我通过来自bash脚本的spark-submit来调用我的火花代码,但据我所知,当火花作业正在运行时bash“进入睡眠状态”并且只有在火花作业终止后才能获得控制权,所以我不认为这是一种选择。

实际上,bash的东西可能是一个解决方案,如果我做了一些聪明的事情,但我必须获得像this这样的工作的驱动程序ID,现在我想“这太过于思考并输入一些简单的东西,如应该内置的超时。“

1 个答案:

答案 0 :(得分:0)

您可以设置经典的python闹钟。然后在处理函数中,您可以引发异常或使用aws ec2 describe-instances --filters "Name=tag-key,Values=Name" 函数来完成驱动程序代码。随着驱动程序的完成,YARN将终止整个应用程序。

您可以在文档中找到示例用法:https://docs.python.org/3/library/signal.html#example