我已经使用 createDirectStream 实现了 Spark Streaming。我的 Kafka 生产者每秒向具有两个分区的主题发送几条消息。
在 Spark 流方面,我每秒读取一次 kafka 消息,并且我将它们以 5 秒的窗口大小和频率窗口化。
Kafka 消息得到了正确处理,我看到了正确的计算和打印。
但在 Spark Web UI 中,在 Streaming 部分下,每个窗口的事件数显示为零。请看这张图片:
我很困惑为什么它显示为零,它不应该显示被馈送到 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