Content

MySQL?Flink实时流处理的核心技术之窗口机制(flink实时写入doris)真没想到

文章摘要

这篇文章介绍了如何使用时间窗口(tumble函数)对用户行为数据进行处理。文章首先描述了如何创建一个名为`source_table`的表结构,包含`user_id`、`price`、`timestamp`字段,并在`row_time`字段中使用自定义的5秒滚动窗口进行时间范围划分。接着,文章详细说明了在数据处理阶段,通过`group by`语句结合`tumble`函数,计算每个用户在不同时间段内的访问量(PV)和总金额(sum_price),同时生成窗口开始和结束时间。整体内容简洁明了,突出了时间窗口处理的核心逻辑和应用场景。

#1.创建source表 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 ‘0’ second ) WITH ( ‘connector’=’socket’, ‘hostname’=’node1’, ‘port’=’9999’, ‘format’=’csv’ ); #2.语法 tumble(事件时间列,窗口大小) 窗口大小是用户自定义的。比如30分钟、1小时等。 直接把tumble窗口放在group by语句后即可。 比如:tumble(row_time,interval ‘5’ second) 含义:定义一个5秒大小的滚动窗口。 #3.数据处理 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);