官方文档说我们可以通过StreamingListener获取处理时间的值:还可以使用StreamingListener接口监视Spark Streaming程序的进度,该接口允许您获取接收器状态和处理时间。 http://spark.apache.org/docs/latest/streaming-programming-guide.html#monitoring-applications
我知道有一些关于Spark指标的信息,但它不包含处理时间和调度延迟。 http://spark.apache.org/docs/latest/monitoring.html#rest-api
我阅读了StreamingListener的源代码。它包含这样的方法:
def printStats() {
showMillisDistribution("Total delay: ", _.totalDelay)
showMillisDistribution("Processing time: ", _.processingDelay)
}
我认为有可能获得这些指标,但我没有意识到。 我的研究需要这些指标。我怎么能得到它们?非常感谢。
答案 0 :(得分:2)
我找到了解决方案。
class MyListener() extends StreamingListener {
override def onBatchCompleted(batchStarted: StreamingListenerBatchCompleted) {
println("Total delay: " + batchStarted.batchInfo.totalDelay)
println("Processing time: " + batchStarted.batchInfo.processingDelay)
}
}