当前位置: 首页 > 知识库问答 >
问题:

Flink流窗口内存使用情况

井斌斌
2023-03-14

我正在评估Flink是否支持流媒体窗口以生成可能的警报。我关心的是内存使用情况,如果有人能帮我,我将不胜感激。

例如,该应用程序将在给定的滚动窗口(例如5分钟)内消耗流中潜在的大量数据。在评估时,如果例如有一百万个文档符合标准,它们会全部加载到内存中吗?

一般流程为:

<代码>制作人-

此外,如果有一些清晰的文档描述了在这些情况下如何处理内存,那么我可能忽略了有人可能会指出这一点,这将很有帮助。

谢谢

共有1个答案

余阳秋
2023-03-14

为组窗口聚合存储的数据量取决于聚合的类型。许多聚合函数,如计数、求和和和最小值可以预先聚合,也就是说,它们只需要在每个窗口中存储一个值。其他聚合函数,如中值或某些用户定义的聚合函数,需要存储所有值,然后才能计算结果。

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

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

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

 类似资料:
  • 我有flink stream,我在某个时间窗口上计算一些事情,比如说30秒。 这里发生的事情是,它给我的结果,我以前的窗口聚合以及。 假设前30秒我得到结果10。 接下来的三十秒我想要新的结果,而不是我得到最后一个窗口的结果新的等等。 因此,我的问题是如何为每个窗口获得新的结果。

  • 主要内容:1.窗口概述,2.窗口分类,3.细分,4.窗口Api,5.窗口分配器 Window Assigners,6.窗口函数,7.TopN 实例1.窗口概述 Flink 是一种流式计算引擎,主要是来处理无界数据流的,数据源源不断、无穷无尽。想要更加方便高效地处理无界流,一种方式就是将无限数据切割成有限的“数据块”进行处理,这就是所谓的“窗口”(Window)。 在 Flink 中, 窗口就是用来处理无界流的核心。我们很容易把窗口想象成一个固定位置的“框”,数据源源不断地流过来,到某个时间点窗口

  • 我正在尝试加入apache flink中的两个流以获得一些结果。 我的项目的当前状态是,我正在获取twitter数据并将其映射到一个2元组中,其中保存用户的语言和定义时间窗口中的推文总和。我这样做是为了每种语言的推文数量和每种语言的转发。推文/转发聚合在其他进程中运行良好。 我现在想得到一个时间窗口内转发次数占所有推文次数的百分比。 因此我使用以下代码: 当我打印或时,输出似乎很好。我的问题是我从

  • 一、窗口概念 在大多数场景下,我们需要统计的数据流都是无界的,因此我们无法等待整个数据流终止后才进行统计。通常情况下,我们只需要对某个时间范围或者数量范围内的数据进行统计分析:如每隔五分钟统计一次过去一小时内所有商品的点击量;或者每发生1000次点击后,都去统计一下每个商品点击率的占比。在 Flink 中,我们使用窗口 (Window) 来实现这类功能。按照统计维度的不同,Flink 中的窗口可以

  • 我尝试使用flink sql窗口API:https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/table_api.html#group-windows

  • 我有一份flink工作,需要在1小时内重复删除收到的记录。重复数据消除后,我需要收集所有这些重复数据消除的文档,并进行一些聚合,如计数,然后生成目标主题。 现在,由于我只需要收集那些重复数据消除的文档,所以可能不需要等待1小时。我如何避免仅为收集这些文档而设置1个小时的窗口,但一旦收集到这些文档,就继续进行聚合。 因此,资源会占用内存,检查点大小也在增加,这是我想要避免的。 水印策略: 如有任何建