Spark Streaming DStream.reduceByKeyAndWindow不起作用

时间:2015-04-30 07:45:53

标签: apache-spark spark-streaming

我正在使用Apache Spark流来对我的Web服务API日志进行实时处理。源流只是一系列带有返回码的API调用。我的Spark应用主要是对原始API调用日志进行聚合,计算返回某些HTTP代码的API数量。

源流上的批处理间隔为1秒。然后我做:

inputStream.reduceByKey(_ + _) where inputStream is of type DStream[(String, Int)].

现在我得到了结果DStream level1。然后我通过调用

在60分钟内reduceByKeyAndWindow level1 val level2 = level1.reduceByKeyAndWindow((a: Int, b: Int) => a + b, Seconds(60), Seconds(60))
level 3

然后我想通过调用

DStream level2之上进行更长时间(例如3600秒)的进一步聚合(比如val level3 = level2.reduceByKeyAndWindow((a: Int, b: Int) => a + b, Seconds(3600), Seconds(3600))
level2

我现在的问题是:我只在level3上获得汇总数据,而level3为空。

我的理解是level 2不应为空,而应汇总level3流。

当然,我可以更改为让level1汇总到level2,而不是level2。但我不明白为什么它不能通过汇总reduceByKeyAndWindow来实现。

在我看来,您只能在源流上执行一层reduceByKeyAndWindow

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

是的,我认为它应该是Spark Streaming中的一个错误。似乎窗口化流的Window操作不起作用。现在我也在调查原因。将不断更新任何调查结果。

类似的问题: indows of windowed streams not displaying the expected results