【问题标题】:Spark streaming - sliding window and use of distinctSpark Streaming - 滑动窗口和不同的使用
【发布时间】:2016-10-07 22:41:33
【问题描述】:

我们可以使用 window 来创建一个转换后的DStream,批量更大:

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

有没有什么方法可以在滑动持续时间也作为参数的移动窗口中进行相同的操作?

【问题讨论】:

    标签: python apache-spark pyspark spark-streaming


    【解决方案1】:

    您是否要过滤掉窗口中的重复项?在这种情况下,您可以通过将 RDD 映射到键值对来模拟窗口上的 distinct,其中键是原始元素的副本并且值不重要,例如 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)...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-21
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多