我可以在火花流中获取窗口中每个时间间隔的数据吗?

时间:2016-01-22 06:12:26

标签: apache-spark spark-streaming

代码:

val ssc = new StreamingContext(sc,Seconds(1)) //interval time is 1 second
val lines = ssc.socketTextStream(args(0),args(1).toInt,StorageLevel.MEMORY_ONLY_SER)
val wc = lines.window(Seconds(3))  //the windowDuration is 3 seconds.

查看上面的代码,间隔时间 1秒,windowDuration 3秒,随着时间的流逝,会有 3次数据窗口中的区间,我可以获取不同处理的每个时间间隔的数据吗?与 mapPartitions() mapPartitionsWithIndex()一样,我可以处理RDD中的每个分区。

有谁知道吗?你可以告诉我吗?谢谢!

1 个答案:

答案 0 :(得分:2)

窗口的要点是将窗口持续时间内的所有RDD“组合”到单个RDD中,这样您就可以聚合数据(在内部它会在窗口宽度内结合RDD)。如果您想在每个时间间隔中使用每个RDD,请不要定义窗口并继续使用lines。然后你可以运行例如lines.foreachRDD(...),它将分别在每个RDD上运行