aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingJobProgressListener.scala8
-rw-r--r--streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala6
2 files changed, 14 insertions, 0 deletions
diff --git a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingJobProgressListener.scala b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingJobProgressListener.scala
index b77c555c68..78aeb004e1 100644
--- a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingJobProgressListener.scala
+++ b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingJobProgressListener.scala
@@ -148,6 +148,14 @@ private[streaming] class StreamingJobProgressListener(ssc: StreamingContext)
receiverInfos.size
}
+ def numActiveReceivers: Int = synchronized {
+ receiverInfos.count(_._2.active)
+ }
+
+ def numInactiveReceivers: Int = {
+ ssc.graph.getReceiverInputStreams().size - numActiveReceivers
+ }
+
def numTotalCompletedBatches: Long = synchronized {
totalCompletedBatches
}
diff --git a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala
index 87af902428..96d943e75d 100644
--- a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala
+++ b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala
@@ -303,6 +303,7 @@ private[ui] class StreamingPage(parent: StreamingTab)
val numCompletedBatches = listener.retainedCompletedBatches.size
val numActiveBatches = batchTimes.length - numCompletedBatches
+ val numReceivers = listener.numInactiveReceivers + listener.numActiveReceivers
val table =
// scalastyle:off
<table id="stat-table" class="table table-bordered" style="width: auto">
@@ -330,6 +331,11 @@ private[ui] class StreamingPage(parent: StreamingTab)
}
}
</div>
+ {
+ if (numReceivers > 0) {
+ <div>Receivers: {listener.numActiveReceivers} / {numReceivers} active</div>
+ }
+ }
<div>Avg: {eventRateForAllStreams.formattedAvg} events/sec</div>
</div>
</td>