【问题标题】:Timeout a pyspark jobpyspark 作业超时
【发布时间】:2016-11-03 17:30:53
【问题描述】:

TL;DR

有没有办法让 pyspark 作业超时?如果运行时间超过预先指定的时间,我希望以集群模式运行的 spark 作业自动终止。

加长版:

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

我想知道,因为我有一个代码,对于特定的病态输入,运行速度会非常慢。对于预期的输入,该工作将在一个小时内终止。检测病态输入与尝试解决问题一样困难,因此我无法选择进行巧妙的预处理。代码的细节很无聊且无关紧要,因此我将省去您阅读它们的时间=)

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

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

【问题讨论】:

  • 您分享的详细信息越多,我们为您提供帮助的机会就越大。
  • 我只想知道某处是否有一个配置参数,如果运行时间超过某个指定时间,会自动终止在集群模式下运行的 Spark 作业。
  • 我添加了一些有关我尝试过的事情的更多相关信息!

标签: apache-spark pyspark


【解决方案1】:

您可以设置经典的python警报。然后在处理函数中,您可以引发异常或使用sys.exit() 函数来完成驱动程序代码。随着驱动程序完成,YARN 会终止整个应用程序。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
相关资源
最近更新 更多