在Apache Flink中,当处理聚合的结果时,我需要知道滚动窗口开始的时间戳(处理时间)。有没有办法获得这个时间戳?窗口边界或水印是否暴露给AggregationFunction?
eqzww0vc1#
沿着AggregateFunction之外,您还可以选择指定WindowFunction。根据文档,您可以执行以下操作:
AggregateFunction
WindowFunction
stream. .keyBy() .window() .aggregate(new AverageAggregate(), new WindowFunctionTest()); public static class WindowFunctionTest implements WindowFunction<..., ..., Tuple, TimeWindow> { public void apply(Tuple key, TimeWindow window, Iterable<...> input, Collector<...> out) { long windowStartTime = window.getStart(); }
zzlelutf2#
我发现ElementConverter中的SinkWriter.Context有窗口和水印时间戳,我只需要写入接收器时的时间戳,所以这对我来说已经足够了。
2条答案
按热度按时间eqzww0vc1#
沿着
AggregateFunction
之外,您还可以选择指定WindowFunction
。根据文档,您可以执行以下操作:
zzlelutf2#
我发现ElementConverter中的SinkWriter.Context有窗口和水印时间戳,我只需要写入接收器时的时间戳,所以这对我来说已经足够了。