假设以下管道:
input.filter(new RichFilterFunction<MyPojo>() {
@Override
public boolean filter(MyPojo value) throws Exception {
return false;
}
});
将创建多少个上述丰富函数的实例?
- 每个任务,无异常
- 但是,每个任务,特定节点上的所有并行任务共享一个实例,因为它们是一个 JVM 实例的一部分
总会有并行性指示的尽可能多的实例。有两个与状态有关的原因:
- 如果您的函数维护某种状态,尤其是在键控上下文中,则共享实例将导致意外的副作用。
- 在早期,用户喜欢保持自己的状态(例如,记住以前的值(。尽管它被严重劝阻,但如果 Flink 不能支持它,那仍然是很糟糕的。