Flink实现固定时长或消息条数的触发器

本文介绍了在实时数仓中如何利用Flink调用Thrift服务补充维度信息,对比了三种方案,并重点探讨了方案三——自定义触发器,该触发器结合了固定时间窗口和消息条数限制。作者分享了实现这样一个触发器的代码,强调了在窗口结束时确保完整触发的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔者在日常工作中遇到了一个问题,在做实时数仓调用第三方Thrift服务来补充维度信息时,第三方提供的服务可以同时传入一个或者多个查询条件,如果传入多个查询条件,则会返回多条结果。 在上述场景下,有如下几种调用第三方服务的方法。

  1. Flink异步调用Thrift服务,每次传入一个参数。

  2. Flink异步调用Thrift服务,设置固定时间的时间窗口,当窗口结束时,将多个查询条件组织到一起并将请求发送出去。

  3. Flink异步调用Thirft服务,添加可以实现固定时长或者消息条数的触发器。

上面这三种方案中:

方案1 由于未使用窗口与触发器,虽然使用了异步调用,但是由于每次只发送含一个参数的请求,针对于每条输入数据,都要发送一次,较为耗时。

方案2 由于需要等待窗口结束后才会发送请求,会无形给下游造成一定的延迟。

方案3 中当固定窗口结束或者窗口内数据条数达到设定长度后都会触发后续的数据处理。

综合看,方案3更加适合上述场景。

Flink 自带的触发器如下:

触发器名称

触发条件

CountTrigger

指定条数触发

ContinuousEventTimeTrigger

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值