我需要根据JavaDstream的上一个和下一个元素进行计算。但是,为了访问这些内容,我需要基于记录计数创建一个滑动窗口。
JavaStreamingContext javaStreamingContext = createSteamingContext(settings);
JavaPairInputDStream<String, String> pivotedKafkaData = KafkaSource.getStream(javaStreamingContext, settings);
JavaDStream<VoyageData> voyageData = pivotedKafkaData.map(Tuple2::_2)
.map(StreamProcessor::getStandardizedRecords)
.map(Functions::getVoyageDataRecords);
JavaDStream<VoyageData> windowedVoyageData = voyageData.window(Durations.seconds(4),Durations.seconds(4));
在我的代码中,我创建了一个基于时间的窗口,现在的问题是,如何从中访问上一个,当前和下一个记录。
最佳答案
您可以使用updateStateByKey(func)转换进行全状态转换,以更好地了解github示例和博客下的结帐信息
https://github.com/phalodi/stateful-wordcount-spark
https://blog.knoldus.com/2015/06/24/stateful-transformation-on-dstream-in-apache-spark-with-example-of-wordcount/
http://www.spark.tc/stateful-spark-streaming-using-transform/