我需要根据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/

10-04 17:52