flink- 状态

1. 问题

select  topic, count(*)  from source_table group by topic

flink统计kafka 的topic 的实时数据量。如果不了解flink的状态,可能统计出来的结果不准确。

2. 处理过程

来了第一条数据,  生成状态 (topic,1),  并下发数据 (toipc,1)

来了第二条数据, 取回状态 (topic,1),自增1,  写回状态(topic,2),下发 数据(topic ,2) 

来了第三条数据, 取回状态 (topic,2),自增1,  写回状态(topic,3),下发 数据(topic ,3) 

为了提升性能,可以开启微批处理,不再一条数据处理一次,而是一批数据处理一次。只是提升性能, 处理流程还是可以理解成上面那样。

3. 问题引入

如果状态丢失会有什么结果? 再次从1 开始累计。

模拟状态丢失: topic 写入数据速率调低, flink状态保留时间调小,让状态被删除。

4.实验数据

  • 刚开始,状态保留时间是1分钟, 每5秒写一条数据。结果符合预期。
  • 之后, 状态保留时间是一分钟, 每120秒写一条数据。结果一直是1了, 而且数据前的标记是+I。 表示是新数据,即之前没有topic1这个key。
+----+--------------------------------+----------------------+
| op |                          topic |               EXPR$1 |
+----+--------------------------------+----------------------+
| +I |                topic1|                    1 |
| -U |                topic1|                    1 |
| +U |                topic1|                    2 |
| -U |                topic1|                    2 |
| +U |                topic1|                    3 |
| -U |                topic1|                    3 |
| +U |                topic1|                    4 |
| -U |                topic1|                    4 |
| +U |                topic1|                    5 |
| -U |                topic1|                    5 |
| +U |                topic1|                    7 |
| +I |                topic1|                    1 |
| +I |                topic1|                    1 |
| +I |                topic1|                    1 |
| +I |                topic1|                    1 |
| +I |                topic1|                    1 |
| +I |                topic1|                    1 |

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值