Apache spark Spark Streaming DStream.reduceByKeyAndWindow不';行不通
我正在使用ApacheSpark streaming对我的web服务API日志进行一些实时处理。源流只是一系列带有返回代码的API调用。我的Spark应用程序主要是对原始API调用日志进行聚合,计算返回特定HTTP代码的API数量 源流上的批处理间隔为1秒。那么我会:Apache spark Spark Streaming DStream.reduceByKeyAndWindow不';行不通,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我正在使用ApacheSpark streaming对我的web服务API日志进行一些实时处理。源流只是一系列带有返回代码的API调用。我的Spark应用程序主要是对原始API调用日志进行聚合,计算返回特定HTTP代码的API数量 源流上的批处理间隔为1秒。那么我会: inputStream.reduceByKey(_ + _) where inputStream is of type DStream[(String, Int)]. 现在我得到了结果DStream level1。然后我通过调用
inputStream.reduceByKey(_ + _) where inputStream is of type DStream[(String, Int)].
现在我得到了结果DStream level1
。然后我通过调用
val level2 = level1.reduceByKeyAndWindow((a: Int, b: Int) => a + b, Seconds(60), Seconds(60))
val level3 = level2.reduceByKeyAndWindow((a: Int, b: Int) => a + b, Seconds(3600), Seconds(3600))
然后,我想通过调用
val level2 = level1.reduceByKeyAndWindow((a: Int, b: Int) => a + b, Seconds(60), Seconds(60))
val level3 = level2.reduceByKeyAndWindow((a: Int, b: Int) => a + b, Seconds(3600), Seconds(3600))
我现在的问题是:我只在level2
上获取聚合数据,而level3
是空的
我的理解是level3
不应该是空的,它应该在level2
流上聚合
当然,我可以将level3
聚合到level1
,而不是level2
。但我不明白为什么它在level2
上聚合时不起作用
在我看来,您只能对源流执行一层reducebykandwindow
。在以前按键和窗口减少的流之上,任何进一步的reduceByKeyAndWindow
层都无法工作
有什么想法吗?是的,我认为这应该是Spark Streaming中的一个bug。窗口化流的窗口操作似乎不起作用。现在我也在调查原因。将随时更新任何发现 类似问题:
谢谢您的回答。这确实是一个bug,我已将其记录为。我自己也修好了。请参阅我的请求