Spark中reduceByKeyAndWindow函数的奇怪行为

时间:2016-10-12 15:33:02

标签: scala apache-spark mapreduce spark-streaming word-count

我正在使用spark 1.6并遇到了这个函数reduceByKeyAndWindow,我用它来对通过kafka主题传输的数据执行字数统计。

以下是reduceByKeyAndWindow提供的备选列表。我们可以看到,所有替代品都有类似的签名和额外的参数。

List of Functions

但是当我只使用reduceByKeyAndWindow和我的reduce函数或者我的reduce函数和持续时间时,它可以工作,并且不会给我任何错误,如下所示。

No errors or warnings here

但是当我使用具有reduce功能,持续时间和滑动窗口时间的替代方案时,它开始给我以下错误,其他替代方案也是如此,如下所示。

Error message recieved

我不确定这里发生了什么,我该如何解决问题。

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

如果您对此行.words.map(x => (x, 1L))发表评论,则应该可以使用.reduceByWindow(_+_, Seconds(2), Seconds(2))中的[DStream]方法。

如果将单词转换为带有count的单词,则应使用以下方法。

reduceByKeyAndWindow(_ + _, _ - _, Minutes(10), Seconds(2), 2)

请参阅文档,详细了解reduce functioninverse reduce函数https://github.com/apache/spark/blob/master/streaming/src/main/scala/org/apache/spark/streaming/dstream/DStream.scala

的详细信息