kafka topic 一段时间不消费_Flink消费kafka的多分区topic时遇见的问题探究

本文探讨了Flink消费Kafka多分区topic时遇到的问题,当执行相同查询两次,结果出现差异。原因是Flink从earliest-offset开始消费,导致watermark不准确,可能丢弃部分数据。解决方案包括减少Kafka分区或调整watermark延迟时间。
摘要由CSDN通过智能技术生成

感谢您抽出

d8ecf8f7cdd8d9b7e0826c850ad06ad8.gif

.

535eeda53630e8537f22b0d62955c5fa.gif

.

0e3916616ab817aa003fb7fd1f121978.gif

来阅读本文

FlinkSql消费Kafka的多分区topic,并实时计算指标,同样的Sql第一次执行和第二次执行结果不一样?

问题描述:

初始条件:Flink版本 1.11,kafka版本0.10,kafka的topic为message-json,3个分区,kafka内没有数据。

在Flink的sql-client端执行创建kafkasource table:

create table iservVisit (    type string comment '时间类型',    uuid string comment '用户uri',    clientTime string comment '10位时间戳',    rowtime as to_timestamp(from_unixtime(cast(substring(coalesce(clientTime, '0'), 1, 10) as bigint))), -- 计算列, 10位时间戳转为timestamp类型    WATERMARK for rowtime as rowtime - INTERVAL '1' MINUTE -- 计算列, 作为watermark) with (    'connector' = 'kafka',    'topic' = 'message-json',    'properties.bootstrap.servers' = 'localhost:9092',    'properties.group.id' = 'consumer-rt',    'format' = 'json',    'json.ignore-parse-errors' = 'true',    'scan.startup.mode' = 'earliest-offset')

然后再执行如下语句,实时生成指标,通过窗口做pv/uv的计算:

select      tumble_start(rowtime, interval '2' MINUTE) as wStart,    tumble_end(rowtime, interval '2' MINUTE) as wEnd,    count(1) as pv,    count(distinct uuid) as uv from iservVisitgroup by tumble(rowtime, interval '2' MINUTE)

这时开始手动一条一条往kafka中发送数据:

      kafka记录                                                      clientTime消息时间    产生的watermark时间   说明{"type":
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值