flink滚动窗口代码

flink滚动窗口代码讲解

重点:
  你单独在kafka写入一批数据进行测试,它不会直接出结果,等你下批测试数据进来的时候他才会显示上一批数据的最终结果集
CREATE TABLE kafkaSource(
  username   string,
  click_url  string,
  ts  timestamp,
  WATERMARK FOR ts as withOffset(ts,1000)
  --ts必须是表中已定义的一列(当前仅支持为Timestamp类型),含义是基于该列生成 watermark,并且标识该列为 Event Time 列,可以在后续 query 中用来定义窗口。
  --1000 代表偏移量(数据可以延迟时间) 相当于是1s
) WITH (
    type='kafka',
    kafka.bootstrap.servers='ip地址:端口号',
    kafka.auto.offset.reset='latest',
    kafka.topic='cui_test',
    kafka.group.id='kafka_group',
    dataType='json',
    parallelism ='1'
);

CREATE TABLE cui_test(
  username string,
  start_time TIMESTAMP,
  end_time TIMESTAMP,
  clicks BIGINT
)WITH(
    type='mysql',
    url='jdbc:mysql://IP地址:端口号/库名?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true',
    userName='库用户名',
    password='库密码',
    tableName='cui_test',
    parallelism ='1'
 );
 
insert into cui_test
select
username,
TUMBLE_START(ROWTIME, INTERVAL '1' MINUTE) as start_time,  --窗口开始时间 定义eventtime 自动生成的
TUMBLE_END(ROWTIME, INTERVAL '1' MINUTE) as end_time,  --创建结束时间 定义eventtime 自动生成的
COUNT(click_url) as clicks
from  kafkaSource 
GROUP BY TUMBLE(ROWTIME, INTERVAL '1' MINUTE), username;

往kafka写入测试数据

{"username":"Tom","click_url":"www.baidu.com","ts":"2021-02-20 16:20:05"} 5条
{"username":"Jack","click_url":"www.baidu.com","ts":"2021-02-20 16:20:10"} 3条

最终库结果

名称     窗口开始时间          窗口结束时间        次数
Tom	    2021-02-20 16:20:00	2021-02-20 16:21:00	5
Jack	2021-02-20 16:20:00	2021-02-20 16:21:00	3
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小崔同学`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值