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

Apache Flink:在一个窗口中计算和输出多个值

欧阳俊逸
2023-03-14

我们计划使用Apache Flink对多种类型的对象执行实时聚合。我们需要支持几种类型的聚合,如和、最大、最小、平均等。-到目前为止没有什么特别的

我们的需求是将数据输出到kafka,其中一条消息包含多个对象属性的多个聚合值。

例如,消息应包括属性A的总和、最大值和平均值,以及过去10分钟内属性B的总和和最小值

我的问题是,用Flink实现这一要求的最佳方式是什么?

我们考虑使用一个自定义窗口函数,该函数将在窗口末尾的所有对象上运行,并自行计算所有必需的值,并输出一个包含所有这些聚合值的新对象。我们关心的是这个解决方案对内存消耗的影响,必须在内存中保存所有等待窗口启动的窗口数据(我们将同时打开许多这样的窗口)

任何建议/意见,高度赞赏!

谢谢

共有1个答案

马涵蓄
2023-03-14

最好的方法是使用增量聚合来计算每个窗口的计数、总和、最小值和最大值——并且您可以在给定总和和和计数的情况下计算窗口函数中的平均值。通过这种方式,您需要保留的唯一状态是这四个值(计数、总和、最小和最大值),而不必在窗口末尾缓冲整个流以进行处理。

文档中的这个示例应该足以让您开始学习。

 类似资料:
  • 我的工作是做以下事情: 根据事件时间使用Kafka主题中的事件 计算7天的窗口大小,以1天的幻灯片显示 将结果放入Redis 我有几个问题: 如果它从最近的记录中消耗Kafka事件,在作业存活1天后,作业关闭窗口并计算7天窗口。问题是作业只有1天的数据,因此结果是错误的。 如果我尝试让它从7天前的时间戳中消耗Kafka事件,当作业开始时,它从第一天开始计算整个窗口,并且花费了很多时间。另外,我只想

  • 我有一个窗口窗体,包含两个列表视图(例如,命名为a和b)和一个按钮。当两个列表视图之间有焦点时,按钮的功能应该是以不同的方式显示消息框。 所以按钮的代码是 然而,当我在“b”列表视图中选择该项时。它总是返回MessageBox。节目(b)。当我重新开始并在“a”列表视图中选择一个项目时,它会给我一个空引用异常。 代码有什么问题吗?

  • 假设有一个测试页面,其代码如下所示。 <!DOCTYPE HTML> <html> <head> <script type="text/javascript"> function output(resultText){ document.getElementById('output').childNodes[0].nodeValue=resultText; }

  • 我有两条流: 测量 WhoMeasured(关于谁进行了测量的元数据) 这些是它们的案例类: 流包含大量数据。流几乎没有任何可用性。事实上,对于<code>who_measured_id</code>流中的每个<code>who_。这本质上是一个哈希表,由流填充。 在我的自定义窗口函数中 这是我的工作。现在你可能会看到,有一些东西不见了:两个流的结合。 因此,从本质上讲,这是一种查找表,当流中的新

  • 问题内容: 我是GUI编程的新手,但需要创建一个多窗口GUI。有谁知道在线上有什么好的教程,或者您能显示一个可以启动2个窗口的简单代码吗? 问题答案: 只需创建两个JFrame对象,如下所示:

  • 我用Java写了一个练习程序,练习一个数的乘方。不知不觉中,我犯了一个奇怪的错误。然而,无论我怎么输入,答案还是正确的。下面是这段代码。 我真想知道到底发生了什么。为什么语句“System.out.println(num1”的幂“num2”是“num1)”没有打印num1的值。 以下是输出: 我使用ECLIPSE LUNA编写java代码。