Spark Streaming Kafka createDirectStream - Spark UI将输入事件大小显示为零

时间:2016-05-06 10:30:19

标签: apache-spark apache-kafka spark-streaming spark-streaming-kafka

我使用createDirectStream实现了Spark Streaming。我的Kafka制作人每秒都会向一个带有两个分区的主题发送几条消息。

在Spark流媒体方面,我每秒都会读取kafka消息,而我们会在5秒的窗口大小和频率上对它们进行窗口化。

Kafka消息已正确处理,我正在查看正确的计算和打印。

但是在Spark Web UI中,在Streaming部分下,它将每个窗口的事件数显示为Zero。请看这个图片:

Spark UI showing Zero events

我很困惑为什么它会显示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

enter image description here

1 个答案:

答案 0 :(得分:0)

Spark Kafka库代码似乎没有记录它。

基于Spark 2.3.1

的代码
  1. 搜索Input Size / Records,发现它是stageData.inputBytes的值(StagePage.scala)
  2. 搜索StageDatainputBytes,发现它是metrics.inputMetrics.bytesRead(LiveEntity.scala)的值
  3. 搜索bytesRead,发现它已设置在HadoopRDD.scalaFileScanRDD.scalaShuffleSuite.scala中。但没有任何与Kafka相关的文件。