从 API 的角度来看,怎样去分配 Timestamp 或生成 Watermark ?
有两种方法:
第一种,在 SourceFunction 当中调用内部提供的 collectWithTimestamp 方法 , 把包含时间戳的数据提取出来; 还可以在Source Function 中 使 用emitWatermark 方法去产生一个 Watermark,然后插入到数据流;
第二种,如果不在 SourceFunction 中可以调用 DateStream.assignTimestampsAndWatermarks 这个方法,同时传入两类 Watermark 生成器:
是定期生成,相当在环境里通过配置一个值,比如每隔多长时间(指真实时间)系统会自动调用 Watermar 生成策略。
是根据特殊记录生成,如果遇到一些特殊数据,可以采取 AssignWithPunctuatedWatermarks 这个方法来进行时间戳和 Watermark 的分配。
资料来源:《Apache Flink 必知必会》,下载链接:https://developer.aliyun.com/topic/download?id=1189
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。