【发布时间】:2019-10-19 18:27:39
【问题描述】:
我的用例
- 输入是由 ID 键入的原始事件
- 我想统计过去 7 天内每个 ID 的事件总数。
- 输出将每 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)))
附:忘记单个减速器的性能问题。
问题
但是,如果我理解正确,这意味着由于滑动窗口的性质,单个事件将产生 7*24*6=1008 条记录。所以我的问题是如何减少绝对数量?
【问题讨论】:
标签: apache-flink flink-streaming