Flink1.7学习笔记(二)时间戳和水印的使用

本文详细介绍了Flink中时间戳和水印的使用,包括如何为数据分配时间戳与水印,提供了两种方法:直接指定和实现生成器。强调了水印生成器的实现,如AssignerWithPeriodicWatermarks和AssignerWithPunctuatedWatermarks的工作原理。此外,还讨论了如何处理迟到元素,以及在有序消息源中如何利用时间戳作为水印。
摘要由CSDN通过智能技术生成
	上文介绍了关于时间戳,时间,与水印的性质,接下来是关于如何在程序之中使用它们的用例。
			ps:关于本文以及以后所用到的maven依赖与打包插件请参考
				https://blog.csdn.net/hxw79321/article/details/86612814 就不在文章之中继续赘述。

首先要设置流环境的时间窗口类型(scala实现)

val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

定义完事件时间类型后就要开始处理事件时间中的数据,我们现在还不能直接对该类型的数据进行操作,上文说过,处理事件时间必须要为其分配时间戳和水印。
一、分配时间戳与水印的两种方法
1、直接在数据之中指定
2、实现时间戳和水印生成器
ps:时间戳和水印是从1970-01-01T00:00:00至今的毫秒数。

要在源就赋予数据水印必须调用SourceContext 的 collectWithTimestamp方法,生成水印需要使用emitWatermark
(Watermark)函数

实现水印生成器首先要实现AssignerWithPeriodicWatermarks 代码:

import org.apache.flink.streaming.api.TimeCharacteristic
import org.apache.flink.streaming.api.functions.AssignerWithPeriodicWatermarks
import org.apache.flink.streaming.api.scala.{DataS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值