【发布时间】:2018-03-09 03:53:08
【问题描述】:
我需要计算从 15 分钟时间窗口内从 kafka 流接收到的许多参数的中值。
我找不到任何内置函数,但我找到了使用自定义 WindowFunction 的方法。
我的问题是:
- 对flink来说是不是一项艰巨的任务?数据可能非常大。
- 如果数据达到千兆字节,flink 是否会将所有内容都存储在内存中,直到时间窗口结束? (应用 WindowFunction 实现的参数之一是 Iterable - 时间窗口内所有数据的集合)
谢谢
【问题讨论】:
-
你能告诉我们一些关于传入数据的事情吗?我们在谈论整数还是浮点数?如果它是整数,您是否有已知的数据范围?归根结底,问题在于对大量数字进行排序。如果我们只是在谈论千兆字节,那听起来您可以在内存中处理它。如果没有,您可以考虑外部合并排序(使用 flink 很容易)。
-
如果您对确切结果不感兴趣,您也可以进行估算:CountMinSketch 可能是您的朋友。
-
数据是来自kafka的日志事件。基本上,这些是大约 20 个加载时间指标,范围为 0 到 30000 (int)。通常小于 10000.. 我需要按数千个维度组合进行聚合,例如网站、页面、浏览器等 - 计算平均值、中位数、百分位数。我找不到 count-min-sketch 的文档。表 api 看起来也很有趣,但我也没有找到中位数谢谢!
-
这里有一些关于实现 count min 草图的讨论:issues.apache.org/jira/browse/FLINK-2147
-
我希望 Flink 的文档有更多的例子
标签: apache-flink