Flink大尺寸/较小的高级滑动窗口性能

问题描述 投票:0回答:1

我的用例

  • 输入是由ID键控的原始事件
  • 我想计算每个ID在过去7天内的事件总数。
  • 输出将是每10分钟前进一次
  • 逻辑上,这将由大小为7天且提前10分钟的滑动窗口处理

post通过1天的翻滚窗口展示了一个很好的优化解决方案

所以我的逻辑将是

env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

val oneDayCounts = joins
  .keyBy(keyFunction)
  .map(t => (t.key, 1L, t.timestampMs))
  .keyBy(0)
  .timeWindow(Time.days(1))

val sevenDayCounts = oneDayCounts
  .keyBy(0)
  .timeWindow(Time.days(7), Time.minutes(10))
  .sum(1)

// single reducer
sevenDayCounts
  .windowAll(TumblingProcessingTimeWindows.of(Time.minutes(10)))

P.S。忘记单个减速器的性能问题。

问题

但是,如果我理解正确,则由于滑动窗口的性质,这意味着单个事件将产生7 * 24 * 6 = 1008个记录。所以我的问题是如何减少绝对数量?

apache-flink flink-streaming
1个回答
0
投票

有一张JIRA票证FLINK-11276google doc,主题是更有效地执行此操作。

我还建议您查看有关[[带有流切片的有效窗口聚合的papertalk

© www.soinside.com 2019 - 2024. All rights reserved.