Scala 带初始状态的Spark Streaming reduceByKeyAndWindow

Scala 带初始状态的Spark Streaming reduceByKeyAndWindow,scala,apache-spark,spark-streaming,Scala,Apache Spark,Spark Streaming,我们有一个流媒体工作,利用。我们希望它在初始状态下工作。这样做的目的是避免在流作业重新启动时丢失状态,同时考虑到windows的历史数据。但是reduceByKeyAndWindow不接受任何initialRDD参数 计划是扩展ReduceByAndWindow以接受initalRDDs参数,以便数据流以这些RDD作为generatedRDD的初始值而不是空映射开始。但是generatedRDD是一个私有变量,因此我对如何继续执行该计划感到有点困惑。您能否添加一个示例,说明您希望如何使用它?也许

我们有一个流媒体工作,利用。我们希望它在初始状态下工作。这样做的目的是避免在流作业重新启动时丢失状态,同时考虑到windows的历史数据。但是reduceByKeyAndWindow不接受任何initialRDD参数


计划是扩展ReduceByAndWindow以接受initalRDDs参数,以便数据流以这些RDD作为generatedRDD的初始值而不是空映射开始。但是generatedRDD是一个私有变量,因此我对如何继续执行该计划感到有点困惑。

您能否添加一个示例,说明您希望如何使用它?也许dstream.transformrdd=>rdd union initialRDD就足够了?基本上,我希望我的窗口由给定rdd中的旧数据和新传入数据组成。假设我的批处理持续时间是1s,窗口持续时间是10s,如果我现在启动流,并且我有过去15秒的数据,1s后我希望我的窗口由9秒的旧数据和1s的新数据组成。我不认为dstream.transformrdd=>rdd union initialRDD会这样做,这意味着在给定的示例中,填充窗口不需要1个rdd,而需要15个rdd。我想不出一个方法来实现这一点,除非你重构你的进程来使用updateStateByKey,并以某种方式在键中计数窗口?w1,w2,w3,w4,。。。