我使用createDirectStream实现了Spark Streaming。我的Kafka制作人每秒都会向一个带有两个分区的主题发送几条消息。
在Spark流媒体方面,我每秒都会读取kafka消息,而我们会在5秒的窗口大小和频率上对它们进行窗口化。
Kafka消息已正确处理,我正在查看正确的计算和打印。
但是在Spark Web UI中,在Streaming部分下,它将每个窗口的事件数显示为Zero。请看这个图片:
我很困惑为什么它会显示Zero,是不是它显示了加入Spark Stream的Kafka消息的数量?
更新:
当我使用groupByKeyAndWindow()api时,这个问题似乎正在发生。当我从我的代码中注释掉这个api用法时,Spark Streaming UI开始正确报告Kafka事件输入大小。
知道为什么会这样吗?这可能是Spark Streaming中的缺陷吗?
我使用的是Cloudera CDH:5.5.1,Spark:1.5.0,Kafka:KAFKA-0.8.2.0-1.kafka1.4.0.p0.56
答案 0 :(得分:0)
Spark Kafka库代码似乎没有记录它。
基于Spark 2.3.1
Input Size / Records
,发现它是stageData.inputBytes
的值(StagePage.scala)StageData
和inputBytes
,发现它是metrics.inputMetrics.bytesRead
(LiveEntity.scala)的值bytesRead
,发现它已设置在HadoopRDD.scala
,FileScanRDD.scala
和ShuffleSuite.scala
中。但没有任何与Kafka相关的文件。