在 Flink SQL 中,实现电商大屏实时 Top-N 的核心难点在于“当前1小时内”(滑动窗口)与“每秒更新”(滑动步长)的结合。 Flink SQL 提供了官方推荐的 Window Top-N 语法。为了优雅且高效地实现这个需求,我们需要分为三步:定义数据源、计算滑动窗口内的商品销售额、使用 计算 Top-N。 以下是完整的生产级实现方案和深度优化建议。 一、 核心 SQL 实现 1. 定义带有 Watermark 的数据源 Top-N 依赖事件时间(Event Time)进行窗口计算,必须定义 Watermark。 2. 定义滑动窗口聚合(HOP Window) “当前1小时内,每秒更新”在 Flink SQL 中的语义是:窗口大小(Size)为 1 小时,滑动步长(Slide)为 1 秒 的 HOP 窗口。 注:这里每过 1 秒,就会有一个 1 小时跨度的窗口触发计算并输出,从而满足“每秒更新”的需求。 3. 使用 ROWNUMBER() 计算 Top-N 这是最优雅的部分:Flink SQL 优化器能够识别特定的 模式,并将其在底层转换为高效的 物理算子,而不是全局全...