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

在Apache Flink中聚合两种不同类型的记录

阎知
2023-03-14

我有一个特定的任务,就是使用Apache Flink和一些附加逻辑将两个数据流连接到一个聚合中。

基本上我有两个数据流:事件流和所谓的元事件流。我使用Apache Kafka作为消息主干。我试图实现的是根据元事件中给出的信息触发评估的聚合/窗口。基本情况是:

  1. 事件的数据流开始发出Type A的记录;
  2. 记录基于某个键在某个聚合或窗口中不断累积;
  3. 元事件数据流接收一个带有给定键的新元事件,该键还定义了将在事件数据流中发出的事件的总量。
  4. 步骤3中的事件数量成为聚合的触发条件。在具有给定键的Type A事件的总数等于具有给定键的元事件中定义的数量后,应触发聚合以进行评估。

步骤1和3的顺序不确定,因此可以重新排序。

我试图分析Flink Global Windows,但不确定它是否是一个好的、适当的解决方案。我也不确定这种问题在Apache Flink中是否有解决方案

非常感谢您的帮助。

共有1个答案

公良理
2023-03-14

简单的答案是. connect()两个流,keyBy()每个流中的适当字段,然后将它们运行到自定义的KeyedCoProcessFunction中。您会保存当前的聚合结果

但这里有一个问题-如果在获取该键的元事件记录之前,在类型A流中获取N条记录,那么会发生什么情况,并且

当然,如果元事件目标可以更改为较小的值,则可能会发生类似的情况。

 类似资料:
  • 我有两个具有FK关系的表。我想要的相当于: 我如何在jOOQ中有效地做到这一点?最后,每个结果行需要一个ARecord实例和一个BRecord实例。

  • 我在Java中有两个几乎相同的方法。唯一的区别是它们有不同的参数类型。它们使用泛型并返回输入参数的类型T。我怎样才能摆脱重复的代码?下面是我的两个方法。最后,它们都使用不同的类型调用Spring。否则,方法是相同的。

  • 我正在尝试合并两个不同类型的列表。我得到了两个不同的API响应从改造在一个android应用程序,第一个列表是一个电影列表定义为 公共类列表{ 我通过以下操作成功地从API中检索到列表 然后,我尝试将一个类型列表和一个类型字符串列表组合起来,以创建一个新类ListingAndImage(字符串是一个URL,我将加载到imageview中) 我的问题是,哪种方式最好将这两个列表组合起来,形成一个列表

  • 问题内容: 我们正在考虑将应用程序从obj-c迁移到Swift。一个问题是,我们的obj- c代码中有一个UITableView,其中包含类型为或类型的对象。基本上,它解析cellForRowAtIndexPath上具有的类型。Swift数组(据我所知)只能处理一种类型。鉴于此,我们如何处理UITableView中要使用的两种不同类型?是否会有像DataObj这样的包装对象,我们每个工作都有可精巧

  • 第一个名为的文档包含以下文档(不包括): 第二个集合名为,具有以下文档: 上的 预期的结果是: 如何使用聚合查询来实现这一点?

  • 问题内容: 我创建了两种类型: 我想创建一个包含这两种类型的表。我知道对于由一种类型组成的表,它是: 对于我上面创建的两种类型,有什么方法可以做到这一点? 我尝试做的(错误的)是创建包含前两个的第三种类型: 然后创建表: 但这是行不通的。我收到此错误: 问题答案: 您不能成为的主键,因为唯一的列是两种复合类型和。您不能在子句中访问这些复合类型的基本类型。 您尝试执行的操作在或上有pk约束。 除此以