Spark Streaming DStream.reduceByKeyAndWindow不起作用 [英] Spark Streaming DStream.reduceByKeyAndWindow doesn't work

查看:199
本文介绍了Spark Streaming DStream.reduceByKeyAndWindow不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用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流上聚合.

当然,我可以更改为让level3level1上而不是在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆