【问题标题】:Shutdown Hook for spark batch application火花批处理应用程序的关闭挂钩
【发布时间】:2020-12-21 04:57:43
【问题描述】:

我有一个 spark scala 批处理应用程序。它在完成或失败时将运行状态提交给 mariadb。 当应用程序被“yarn application -kill [appid]”杀死时,我想实现一个边缘案例,我想在 mariadb 表中将状态更新为失败。

我计划使用“ShutdownHookManager”,但我发现它在 spark 中是私有的,并且 scala sys.ShutdownHookThread 也不能正常工作。

有人可以指导我处理杀死火花批处理应用程序的关闭挂钩。没有太多资源。

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    您可以创建一个自定义的SparkListener 来响应onApplicationEnd 事件:

    class MyListener extends SparkListener {
      override def onApplicationEnd(applicationEnd: SparkListenerApplicationEnd): Unit = {
        println("Shutting down...")
      }
    }
    

    然后这个监听器可以是added 到 SparkContext:

    spark.sparkContext.addSparkListener(new MyListener())
    

    当 Spark 应用程序终止时,字符串 Shutting down... 会打印在控制台上。

    【讨论】:

    • 这段代码是在driver还是worker上执行的?
    • @theannouncer 它正在驱动程序上运行。一种查看方法是在侦听器中打印出当前线程名称
    猜你喜欢
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 2023-01-12
    相关资源
    最近更新 更多