如何在FlinkSQL中定义会话窗口(Session Window)和配置其属性?

提问者:帅平 问题分类:大数据
如何在FlinkSQL中定义会话窗口(Session Window)和配置其属性?
2 个回答
永不落的梦想
永不落的梦想
在select中定义:
SELECT 
  SESSION_START(event_time, INTERVAL '30' MINUTE) AS session_start,
  SESSION_END(event_time, INTERVAL '30' MINUTE) AS session_end,
  user_id,
  COUNT(*) AS event_count
FROM user_actions
GROUP BY 
  SESSION(event_time, INTERVAL '30' MINUTE),
  user_id;
在create table中定义:
CREATE TABLE sessionized_events (
  session_start TIMESTAMP(3),
  session_end TIMESTAMP(3),
  user_id STRING,
  event_count INT,
  WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
) WITH (...);
INSERT INTO sessionized_events
SELECT 
  SESSION_START(event_time, INTERVAL '30' MINUTE) AS session_start,
  SESSION_END(event_time, INTERVAL '30' MINUTE) AS session_end,
  user_id,
  COUNT(*) AS event_count
FROM user_actions
GROUP BY 
  SESSION(event_time, INTERVAL '30' MINUTE),
  user_id;
发布于:4周前 (05-28) IP属地:
一闪一闪亮晶晶べ
一闪一闪亮晶晶べ
具体核心配置有:
1、设置活动间隙
SESSION(event_time, INTERVAL '5' MINUTE)  -- 5分钟活动间隙
2、定义时间语义:
WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND  -- 允许5秒延迟
3、延迟数据处理:
WATERMARK FOR event_time AS event_time - INTERVAL '10' SECOND  -- 允许10秒延迟
4、最大会话时长
SESSION(event_time, INTERVAL '30' MINUTE, MAX DURATION '2' HOUR)
发布于:4周前 (05-28) IP属地:
我来回答