ApacheFlink;确定窗口边界时间戳

3okqufwl  于 2023-03-11  发布在  Apache
关注(0)|答案(2)|浏览(113)

在Apache Flink中,当处理聚合的结果时,我需要知道滚动窗口开始的时间戳(处理时间)。有没有办法获得这个时间戳?窗口边界或水印是否暴露给AggregationFunction?

eqzww0vc

eqzww0vc1#

沿着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();
    }
zzlelutf

zzlelutf2#

我发现ElementConverter中的SinkWriter.Context有窗口和水印时间戳,我只需要写入接收器时的时间戳,所以这对我来说已经足够了。

相关问题