MySQL Flink Watermark实现事件时间处理的关键技术(ocp认证烂大街了吗)万万没想到

随心笔谈9个月前发布 admin
212 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章主要介绍了如何在数据库中创建带有时间戳和水印的表,并通过查询SQL进行数据窗口计算。具体来说: 1. **表创建**:创建了`source_table`表,包含`user_id`、`price`、`timestamp`等字段,并使用`TO_TIMESTAMP`和`FROM_UNIXTIME`生成时间戳。表的连接方式为`socket`,连接到`node1`,端口为9999,输出格式为CSV。 2. **水印解释**:解释了`WATERMARK`关键字的作用,允许数据延迟2秒到达,触发计算窗口的开始时间。 3. **查询SQL**:展示了如何通过`tumble`函数对数据进行窗口分组,并计算窗口的时间范围。查询中使用了`UNIX_TIMESTAMP`将时间戳转换为整数,并分组统计用户ID、窗口PV和PV金额等信息。 总结:文章通过实例展示了如何在数据库中设置带有水印的表结构,并利用时间窗口功能进行数据分组和延迟计算。

#1.创建表
CREATE TABLE source_table (
user_id STRING,
price BIGINT,
`timestamp` bigint,
row_time AS TO_TIMESTAMP(FROM_UNIXTIME(`timestamp`)),
watermark for row_time as row_time – interval ‘2’ second
) WITH (
‘connector’=’socket’,
‘hostname’=’node1’,
‘port’=’9999’,
‘format’=’csv’
);
#2.Watermark的解释
WATERMARK FOR ts AS ts – INTERVAL ‘2’ SECOND
这里的2,表示,数据允许延迟2秒钟到达,窗口会在(正常结束+延迟时间)后触发计算
#3.查询SQL
select
user_id,
count(*) as pv,
sum(price) as sum_price,
UNIX_TIMESTAMP(CAST(tumble_start(row_time, interval ‘5’ second) AS STRING)) * 1000 as window_start,
UNIX_TIMESTAMP(CAST(tumble_end(row_time, interval ‘5’ second) AS STRING)) * 1000 as window_end
from source_table
group by
user_id,
tumble(row_time, interval ‘5’ second);

© 版权声明

相关文章