Spark Streaming:如何通过StreamingListener获取处理时间和调度延迟?

时间:2016-07-11 14:52:19

标签: spark-streaming

官方文档说我们可以通过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)
}

我认为有可能获得这些指标,但我没有意识到。 我的研究需要这些指标。我怎么能得到它们?非常感谢。

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。

class MyListener() extends StreamingListener {
    override def onBatchCompleted(batchStarted: StreamingListenerBatchCompleted) {
    println("Total delay: " + batchStarted.batchInfo.totalDelay)
    println("Processing time: " + batchStarted.batchInfo.processingDelay)
  }
}