我有2个线性Spark结构化流媒体作业,可将数据从一个kafka主题复制到另一个。
是否可以发布/查看Spark UI中消耗/产生的事件数?
答案 0 :(得分:2)
Spark Web UI中的“流选项卡”不适用于结构化流,仅适用于Direct API。从版本3.x开始可用。
但是,还有另一种简便的方法来显示Spark结构化流作业处理的事件数。
import org.apache.spark.sql.streaming.StreamingQueryListener
import org.apache.spark.sql.streaming.StreamingQueryListener.QueryProgressEvent
class CountNumRecordsListener extends StreamingQueryListener {
override def onQueryStarted(event: StreamingQueryListener.QueryStartedEvent): Unit = { }
override def onQueryProgress(event: QueryProgressEvent): Unit = {
println(s"""numInputRows: ${event.progress.numInputRows}""")
}
override def onQueryTerminated(event: StreamingQueryListener.QueryTerminatedEvent): Unit = { }
}
然后使用该类,您可以将侦听器添加到流应用程序中(其中spark
是您的SparkSession
)。
val countNumRecordsListener = new CountNumRecordsListener
spark.streams.addListener(countNumRecordsListener)
StreamingQueryProgress类还提供了更多信息,可帮助您了解流作业的数据处理。