火花流 - 滑动窗口和使用分明

时间:2016-06-07 21:05:40

标签: python apache-spark pyspark spark-streaming

我们可以使用窗口创建一个包含更大批量的转换DStream

streamIDs.window(Duration(1000)).foreachRDD(rdd => println(rdd.distinct().count())) 

在移动窗口中是否有任何方法可以将滑动持续时间作为参数进行相同的操作?

1 个答案:

答案 0 :(得分:1)

您是否尝试过滤窗口中的重复项?在这种情况下,您可以通过将RDD映射到键值对来模拟窗口上的不同,其中键是原始元素的副本,并且值不重要,例如null

streamIDs
    .mapToPair(lambda s : (s, null))
    .reduceByKeyAndWindow(lambda t1, t2 : t1, Duration(1000))
    .map(lambda (x, y) : x)

这将从每个滑动窗口创建不同值的DStream。

如果您还想要每个窗口中每个值的计数,请执行以下操作:

streamIDs
    .mapToPair(lambda s : (s, 1))
    .reduceByKeyAndWindow(lambda t1, t2 : t1 + t2, Duration(1000))

这将创建一个价值计数对的DStream,例如('A', 3), ('B', 5)...