【发布时间】:2016-09-01 09:26:50
【问题描述】:
我已经使用 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
【问题讨论】:
-
您是否正在从检查点目录恢复作业?这里似乎注册了一个问题issues.apache.org/jira/browse/SPARK-11152
-
您确定您正在寻找正确的流媒体作业吗?
-
@avr,为了验证我的代码中没有检查点,我注释掉了 updateStateByKey api 和 ssc.checkpoint(checkpointDir) 的使用。但我仍然看不到正确的“事件大小”。 Spark Streaming UI 正确报告了第一个事件大小,并且总是显示“零”。
-
您找到解决此问题的方法了吗?无论直接还是基于接收器的 kafka 输入流,都有类似的问题。
-
我在使用自定义接收器时遇到了类似的问题,除了我所有的输入大小都是 1。我正在使用带有 slideDuration 和 windowDuration 的窗口函数。
标签: apache-spark apache-kafka spark-streaming spark-streaming-kafka