gpt4 book ai didi

java - Spark : Send debug text to driver from worker

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:24 28 4
gpt4 key购买 nike

我想诊断一些错误。我相信我不应该告诉整个场景来为我的问题找到一个好的解决方案。因此,我想创建一些关于工作人员的调试信息并将其显示在驱动程序上,可能是实时的。

我在某处读到,在 worker 上发出 System.out.println("DEBUG: ...") 会在执行程序日志中生成一行,但目前我无法检索那些日志。除此之外,如果我能在计算运行时在驱动程序上看到一些调试噪音,它仍然有用。

(我也想出了一个解决方法,但我不知道我是否应该应用它。在每个工作任务结束时,我可以将元素附加到序列文件中,然后我可以监视它,或者在结束。)

最佳答案

我能想到的一种方法是(ab)使用自定义累加器将消息从工作人员发送到驱动程序。这将从 worker 那里得到任何字符串消息给司机。在驱动程序上,您将打印内容以收集信息。它不是实时的,因为它取决于程序的执行。

import org.apache.spark.AccumulatorParam

object LineCummulatorParam extends AccumulatorParam[String] {
def zero(value:String) : String = value
def addInPlace(s1:String, s2:String):String = s1 + "\n" + s2
}

val debugInfo = sparkContext.accumulator("","debug info")(DebugInfoCummulatorParam)

rdd.map{rdd => ...
...
...
//this happens on each worker
debugInfo += "something happened here"
}

//this happens on the driver
println(debugInfo)

不确定为什么您不能访问工作日志 - 顺便说一句,这将是最直接的解决方案。

关于java - Spark : Send debug text to driver from worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26658451/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com