5

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

例如,假设我在一个运算符上按键进行分区,并且我需要分A区内的一个分区状态C(出于任何原因)(图 1.a),或者我需要C下游运算符中的运算符状态F(图 1 .b)。

在此处输入图像描述

我知道可以broadcast记录到所有分区。因此,如果您在记录中包含操作员的内部状态,您可以与下游操作员共享您的内部状态。
但是,这可能是一项昂贵的操作,而不是简单地让op1专门询问op2状态。

可查询状态的最新发展是否正在朝着这个概念发展,或者它们只是为了让外部用户查询拓扑的内部状态?

提前感谢您的见解

4

1 回答 1

3

一般来说,Flink 的设计不允许读取或写入相同或不同算子的其他子任务的状态。正如您所说,您可以使用broadcast使状态在全球范围内可用。可查询状态功能适用于外部用户查询。

但是,我听说有用户在操作员中利用此功能从同一作业的其他操作员那里获取数据。我不知道这有多好(稳定性和性能方面)。如果您想尝试一下,我会将您指向用户邮件列表以进行更深入的技术讨论。

于 2016-10-13T09:11:36.743 回答