开发者社区> 问答> 正文

Apche Flink - 活动时间

我想为Apache flink中的事件创建一个事件时钟。我是按照以下方式做的
public class TimeStampAssigner implements AssignerWithPeriodicWatermarks> {

private final long maxOutOfOrderness = 0; // 3.5 

private long currentMaxTimestamp;

@Override
public long extractTimestamp(Tuple2<String, String> element, long previousElementTimestamp) {

    currentMaxTimestamp = new  Date().getTime();

    return currentMaxTimestamp;
}
@Override
public Watermark getCurrentWatermark() {

    return new Watermark(currentMaxTimestamp - maxOutOfOrderness);
}

}
请检查上面的代码,并告诉我是否正确执行。在事件时间和水印分配之后,我想要处理流程中的流,其中我将为不同的密钥收集流数据10分钟。

展开
收起
flink小助手 2018-12-10 14:01:28 2062 0
1 条回答
写回答
取消 提交回答
  • flink小助手会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关flink的问题及回答。

    事件时间时间戳应该是确定性的(即可再现的),并且它应该基于事件流中的数据。如果您打算使用Date()。getTime,那么您或多或少会使用处理时间。

    通常,在执行事件时处理时,事件将具有时间戳字段,时间戳提取器将返回此字段的值。

    您展示的实施将失去使用事件时间带来的大部分好处,例如重新处理历史数据以重现历史结果的能力。

    2019-07-17 23:19:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载