gpt4 book ai didi

apache-flink - Flink Stream 窗口内存使用情况

转载 作者:行者123 更新时间:2023-12-02 03:44:48 24 4
gpt4 key购买 nike

我正在评估 Flink,专门针对可能生成警报的流窗口支持。我担心的是内存使用情况,因此如果有人可以提供帮助,我们将不胜感激。

例如,此应用程序可能会在给定的 5 分钟滚动窗口内消耗流中的大量数据。在评估时,如果有一百万个文档符合标准,它们是否都会被加载到内存中?

一般流程是:

生产者 -> kafka -> flinkkafkaconsumer -> table.window(Tumble.over("5.分钟").select("...").where("...").writeToSink( someKafkaSink)

此外,如果有一些明确的文档描述了在这些情况下如何处理内存,我可能忽略了有人可能会有所帮助。

谢谢

最佳答案

为组窗口聚合存储的数据量取决于聚合的类型。许多聚合函数,例如 COUNTSUMMIN/MAX 都可以进行预聚合,即它们只需要每个窗口存储一个值。其他聚合函数(例如 MEDIAN 或某些用户定义的聚合函数)需要存储所有值,然后才能计算结果。

聚合需要存储的数据存储在 state backend 中。根据状态后端的选择,数据可能存储在 JVM 堆的内存中或 RocksDB 实例的磁盘上。

表 API 查询还通过关系优化器(基于 Apache Calcite)进行优化,以便将过滤器尽可能推向源。根据谓词,过滤器可能会在聚合之前应用。

最后,您需要在示例查询中的 window()select() 之间添加 groupBy()(请参阅示例在 docs )。

关于apache-flink - Flink Stream 窗口内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47106006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com