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

Flink中运营商之间的共享状态

左丘弘致
2023-03-14

我想知道在Flink中是否可以在运营商之间共享状态。

比方说,我在一个操作符上按键进行分区,我需要一个分区的状态(无论出于什么原因)(图1.a),或者我需要下游操作符中操作符的状态(图1.b)。

我知道可以将记录广播到所有分区。因此,如果在记录中包含操作符的内部状态,则可以与下游操作符共享内部状态
然而,这可能是一个昂贵的操作,而不是简单地让op1专门请求op2状态。

可查询状态的最新发展是朝着这个概念发展,还是仅仅让外部用户查询拓扑的内部状态?

提前感谢您的见解

共有1个答案

楚承天
2023-03-14

一般来说,Flink的设计不允许读取或写入相同或不同操作符的其他子任务的状态。正如您所说,您可以使用广播使状态全局可用。可查询状态功能用于外部用户查询。

然而,我听说有用户利用某个操作员的此功能从同一工作的其他操作员那里获取数据。我不知道它的工作情况如何(稳定性和性能方面)。如果您想尝试一下,我会向您指出用户邮件列表,以进行更深入的技术讨论。

 类似资料:
  • 这个问题在这里已经被问到了,但是两年过去了,我想知道是否有什么改变。 我有一个用例,我希望在两个Flink操作符之间共享状态: > A流是主流,它连续流动 流B只是富集数据的数据集。它很大(几个GBs),因此不能作为广播流。 流B有一个与之相关联的运算符(FlatMap,但可以是任何实际的),它充当状态加载器,并将浓缩数据作为列表状态加载到RocksDB中。 null

  • 使用时有点卡住了。如果我把它放在before窗口上,它似乎可以正常工作,但如果放在窗口的“apply”函数之后,它就会失败。 我正在测试两个流,主功能在不断摄取数据和控制流模型在更改模型的要求。 我能够在中正确设置并查看b0/b1,但是始终可以看到b0和b1在初始化时设置为0。 我是不是漏了什么明显的东西?

  • 我有一个测试类的testng套件,我正在通过一个testng.xml文件运行它。这个很管用。所有测试都是串行运行的,因此没有并行执行障碍。 当然,通过类成员变量在单个类中的测试方法之间共享状态是很容易的,但是我不知道如何在测试类之间共享状态。

  • 问题内容: 在不使用服务或在父控制器中构造观察器的情况下,如何使子状态访问主控制器的。 我无法在子状态下访问mainController范围-而是正在获取该范围的另一个实例- 不是我想要的。我觉得我缺少一些简单的东西。在状态对象中有一个共享的数据配置选项,但是我不确定是否应该将其用于这样的事情。 问题答案: 我创建了工作的插件,展示了如何使用和UI- Router。 状态定义未更改: 但是每个状态

  • 问题内容: 我想在两个兄弟Routes 和之间共享一个共享状态(远程获取客户端列表)。 我想尝试使用“纯” React(无Flux架构)可以走多远。 这个例子 可行,但是我有一个错误:所以,它似乎不喜欢异步道具。 是否可以将异步道具发送到每个路由? 还是可以在父路由(组件)中设置整个状态,然后从每个子路由(和组件)访问此状态? 问题答案: 您可以使用高级组件来提取数据并将数据注入到顶级组件。然后,

  • 我从我的. jar文件运行多个作业。我想在我的工作之间共享状态。但所有输入在每个工作中消耗(来自kafka)并生成重复输出。我看到我的闪烁面板。所有的工作“记录发送”是3。我认为必须将数字拆分到我的工作。 我使用此命令创建作业 我怎样才能修复它?