DataStream API 二 之 时间概念 与 Watermark

一.时间概念指定

事件时间(EventTime)
接入时间(Ingestion Time)
处理时间(Processing Time)

val env =StreamExecutionEnvironment.getExecutionEnvironent()
env.setStreamTimeCharateristic(TimeCharacteristic.EventTime)

二.EventTime 和 Watermark

2.1 指定Timestamps 生成 Watermark

2.1.1 在 SourceFunction 中直接定义

val input =List(("a",1L,1),("b",1L,1),("c",3L,1))
val source :DataStream[(String,Long,Int)]=enc.addSource(
	new SourceFunction[(String,Long,Int)](){
	overrride def run(ctx:SourceContext[(String,Long,Int)]):Unit={
	input.foreach(value=>{
	ctx.collectWithTimeStamp(value,value._2)
	ctx.emitWatermark(new Watermark(value._2-1))
	})
	//设定默认Watermark
	ctx.emitWatermark(new Watermark(Long.MaxValue))
	}
	override def cancel():Unit={}
}) 

2.1.2 用 Flink自带的 Timestamp Assigner

2.1.2.1 用 Ascending 升序模式Timestamp Assigner

适用于事件按顺序生成,没有乱序事件的情况。

2.1.2.2 用 固定时延间隔的 Timestamp Assigner

2.1.3 自定义Timestamp Assigner

2.1.3.1 用 Periodic 周期性 Watermarks 自定义生成
2.1.3.2 用 Punctuated 根据接入数据的数量 Watermarks 自定义生成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值