Flink 面试题
目录

Flink 中 Table API & SQL 如何使用窗口?

· 约 3 分钟读完 · 第 132 / 161 章

推荐答案

在 Flink 的 Table API 和 SQL 中,窗口操作可以通过 TUMBLE、HOP 和 SESSION 等窗口函数来实现。以下是如何使用这些窗口函数的示例:

1. TUMBLE 窗口(滚动窗口)

2. HOP 窗口(滑动窗口)

3. SESSION 窗口(会话窗口)

本题详细解读

1. TUMBLE 窗口(滚动窗口)

  • 定义:滚动窗口将数据流划分为固定大小的、不重叠的时间窗口。
  • 使用场景:适用于需要按固定时间间隔统计数据的场景,如每小时统计一次用户行为。
  • 关键函数:
    • TUMBLE(rowtime, INTERVAL '1' HOUR):定义一个1小时的滚动窗口。
    • TUMBLE_START 和 TUMBLE_END:分别获取窗口的开始和结束时间。

2. HOP 窗口(滑动窗口)

  • 定义:滑动窗口将数据流划分为固定大小的、可以重叠的时间窗口。
  • 使用场景:适用于需要按滑动时间间隔统计数据的场景,如每30分钟统计一次过去1小时内的用户行为。
  • 关键函数:
    • HOP(rowtime, INTERVAL '30' MINUTE, INTERVAL '1' HOUR):定义一个滑动窗口,窗口大小为1小时,滑动步长为30分钟。
    • HOP_START 和 HOP_END:分别获取窗口的开始和结束时间。

3. SESSION 窗口(会话窗口)

  • 定义:会话窗口根据事件之间的时间间隔来划分窗口,当事件之间的间隔超过指定时间时,窗口关闭。
  • 使用场景:适用于需要根据用户活动间隔来统计数据的场景,如统计用户会话。
  • 关键函数:
    • SESSION(rowtime, INTERVAL '10' MINUTE):定义一个会话窗口,当事件间隔超过10分钟时,窗口关闭。
    • SESSION_START 和 SESSION_END:分别获取窗口的开始和结束时间。

通过以上窗口函数,可以在 Flink 的 Table API 和 SQL 中灵活地进行时间窗口操作,满足不同的业务需求。