Datastream - 过去日期的TimeWindow

时间:2017-04-11 09:57:21

标签: time stream apache-flink data-processing

我有过去活动时间的数据集

01-12-2015 01:10:10
01-12-2015 01:10:20
01-12-2015 01:10:30
01-12-2015 01:10:40
.... (millions of records)

我想对此timeWindow(Time.seconds(30))

应用timeWindow

我可以使用TimeExtractor类来获取数据中的EventTime。但是我如何实现getCurrentWatermark方法。它应该得到过去的日期和时间

1 个答案:

答案 0 :(得分:1)

在您的情况下,最好使用提供的TimeStampAssigners之一here

所以我推荐的是这样的:

DataStream<MyEvent> stream = ...

DataStream<MyEvent> withTimestampsAndWatermarks =
stream.assignTimestampsAndWatermarks(new AscendingTimestampExtractor<MyEvent>() {

    @Override
    public long extractAscendingTimestamp(MyEvent element) {
        return element.getCreationTime();
    }
});

还要记得设置正确的TimestampCharacteristic

env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);