Spark Streaming DStream.reduceByKeyAndWindow不起作用 [英] Spark Streaming DStream.reduceByKeyAndWindow doesn't work
问题描述
我正在使用Apache Spark流对Web服务API日志进行一些实时处理.源流只是一系列带有返回码的API调用.而且我的Spark应用程序主要是在原始API调用日志上进行汇总,计算有多少API返回某些HTTP代码.
源流上的批处理间隔为1秒.然后我做:
inputStream.reduceByKey(_ + _) where inputStream is of type DStream[(String, Int)].
现在我得到结果DStream level1
.然后在60秒内通过调用
val level3 = level2.reduceByKeyAndWindow((a: Int, b: Int) => a + b, Seconds(3600), Seconds(3600))
在level1
上执行reduceByKeyAndWindow
val level2 = level1.reduceByKeyAndWindow((a: Int, b: Int) => a + b, Seconds(60), Seconds(60))
然后我想通过调用DStream level2
之上的更长的时间(例如3600秒)内进行进一步的汇总(例如level 3
)
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
的任何其他层将无法正常工作.
有什么想法吗?
是的,我认为这应该是Spark Streaming中的错误.似乎窗口流的窗口操作不起作用.现在,我也在调查原因.会随时更新任何发现.
类似问题: 解决方案
Yes, I think it should be a bug in Spark Streaming. Seems the Window operation of windowed stream does not work. Now I'm also investigating the reason. Will keep updated for any findings.
Similar Question: indows of windowed streams not displaying the expected results
这篇关于Spark Streaming DStream.reduceByKeyAndWindow不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!