Apache flink Apache Flink RichAsyncFunction open()是在初始化时调用一次还是每次调用一次?

Apache flink Apache Flink RichAsyncFunction open()是在初始化时调用一次还是每次调用一次?,apache-flink,Apache Flink,open()函数是在init上执行一次还是每次执行rich函数时执行一次 所以,如果我们想执行一个繁重的操作,比如创建一个数据库数据源,我们可以在那里执行,而不会在每次调用时初始化它 在操作符初始化期间,为操作符的每个并行实例调用一次open()方法。因此,是的,这是您执行“繁重”一次性初始化调用的地方。从我的测试来看,它似乎可以工作。我现在只有一个节点。所以我猜当作业在多个代理上执行/拆分时。open()将为每个节点调用一次,对吗?运算符的每个实例都有一个open调用。这个操作符的并行性(不是

open()函数是在init上执行一次还是每次执行rich函数时执行一次


所以,如果我们想执行一个繁重的操作,比如创建一个数据库数据源,我们可以在那里执行,而不会在每次调用时初始化它

在操作符初始化期间,为操作符的每个并行实例调用一次
open()
方法。因此,是的,这是您执行“繁重”一次性初始化调用的地方。

从我的测试来看,它似乎可以工作。我现在只有一个节点。所以我猜当作业在多个代理上执行/拆分时。open()将为每个节点调用一次,对吗?运算符的每个实例都有一个open调用。这个操作符的并行性(不是节点的数量)决定了你有多少个实例。所以设置并行性(…)。酷@kkrugler我在实现KafkaDeserializationSchema的类的open方法中初始化了自定义度量,然后它在反序列化方法中抛出了一个NPE。如何在打开之前调用反序列化方法?刚刚找到了解决方案-Flink 1.11.0中存在缺陷,该缺陷在1.11.3中得到了解决。BaseKafkanConsumer中的Open方法是在else语句中调用的,而不是在其外部调用的。