开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

从 API 的角度来看,怎样去分配 Timestamp 或生成 Watermark ?

从 API 的角度来看,怎样去分配 Timestamp 或生成 Watermark ?

展开
收起
云上静思 2021-11-15 18:57:19 515 0
1 条回答
写回答
取消 提交回答
  • 有两种方法:

    第一种,在 SourceFunction 当中调用内部提供的 collectWithTimestamp 方法 , 把包含时间戳的数据提取出来; 还可以在Source Function 中 使 用emitWatermark 方法去产生一个 Watermark,然后插入到数据流;

    第二种,如果不在 SourceFunction 中可以调用 DateStream.assignTimestampsAndWatermarks 这个方法,同时传入两类 Watermark 生成器:

    1. 是定期生成,相当在环境里通过配置一个值,比如每隔多长时间(指真实时间)系统会自动调用 Watermar 生成策略。

    2. 是根据特殊记录生成,如果遇到一些特殊数据,可以采取 AssignWithPunctuatedWatermarks 这个方法来进行时间戳和 Watermark 的分配。

    资料来源:《Apache Flink 必知必会》,下载链接:https://developer.aliyun.com/topic/download?id=1189 

    2021-11-16 15:10:36
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
Spring Boot2.0实战Redis分布式缓存 立即下载
CUDA MATH API 立即下载
API PLAYBOOK 立即下载